如何格式化不使用 Itertools 或 Functools 创建的列表的累积和

发布于 2025-01-15 21:53:48 字数 374 浏览 1 评论 0原文

num_list = [12, 16, 17, 2, 5, 19, 24, 27, 42]

您好,我正在尝试格式化不使用 itertools 创建的数字列表的累积和。这是我到目前为止的代码。我希望打印时累积列表中的每个数字的宽度为 10,但我不确定如何实现。

def Cumulative(lists):
num_list = []
length = len(lists)
num_list = [sum(lists[0:x:1]) for x in range(0, length+1)]
return num_list[1:]
print (Cumulative(num_list))

F 字符串格式显然没有帮助。

num_list = [12, 16, 17, 2, 5, 19, 24, 27, 42]

Hello, I'm trying to format the cumulative sum of a list of numbers created without itertools. This is the code I have so far. I would like each number in the cumulative list to have a width of 10 when printed, but I am not sure how.

def Cumulative(lists):
num_list = []
length = len(lists)
num_list = [sum(lists[0:x:1]) for x in range(0, length+1)]
return num_list[1:]
print (Cumulative(num_list))

F string formatting obviously proved to be unhelpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

豆芽 2025-01-22 21:53:48

您可以使用 f 字符串来格式化文本中的每个列表项(整数)

输出字符串对齐的语法由 > 定义

示例:

f"{number : >10}"  # this aligns the number to the right, with a width of 10

同样,在您的代码中,您可以对内部 sum() 的结果使用此格式您的列表理解:

num_list = [12, 16, 17, 2, 5, 19, 24, 27, 42]


def cumulative_sum(lists):
    length = len(lists)
    new_list = [f"{sum(lists[0:x]) : >10}" for x in range(0, length+1)]
    return new_list[1:]


print(cumulative_sum(num_list))

输出将是:

['        12', '        28', '        45', '        47', '        52', '        71', '        95', '       122', '       164']

这将满足您的要求:

我希望累积列表中的每个数字在打印时宽度为 10

注意:现在列表由字符串组成,而不是整数

或者

如果您不这样做不想更改每个项目的类型,那么您可以保留返回整数列表的函数。

您可以在打印每个列表项时在它们周围添加 f 字符串对齐格式。例如:

for num in cumulative_sum(num_list):
     print(f"{num : >10}")

输出:

        12
        28
        45
        47
        52
        71
        95
       122
       164

You can use f-strings to format each list item (integer) within text.

The syntax of the alignment of the output string is defined by >

Example:

f"{number : >10}"  # this aligns the number to the right, with a width of 10

Similarly, in your code, you can use this formatting on the result of the sum() inside your list comprehension:

num_list = [12, 16, 17, 2, 5, 19, 24, 27, 42]


def cumulative_sum(lists):
    length = len(lists)
    new_list = [f"{sum(lists[0:x]) : >10}" for x in range(0, length+1)]
    return new_list[1:]


print(cumulative_sum(num_list))

The output will be:

['        12', '        28', '        45', '        47', '        52', '        71', '        95', '       122', '       164']

This will satisfy your requirement:

I would like each number in the cumulative list to have a width of 10 when printed

Note: now the the list is made up of strings, not integers

Alternatively:

If you don't want to change the type of each item, then you can keep the function returning the list of integers.

You can add the f-string alignment formatting around each list item as you print them. For example:

for num in cumulative_sum(num_list):
     print(f"{num : >10}")

Output:

        12
        28
        45
        47
        52
        71
        95
       122
       164
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文