如何格式化在没有Itertools或Functools的情况下创建的列表的累计和


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字符串格式显然是没有帮助的。

您可以使用f-string格式化文本中的每个列表项(整数(

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

示例:

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

相关内容

最新更新