首页 > 解决方案 > 如何打印包含单独列表总和的列表

问题描述

我正在尝试获取列表列表的总和,其中对于下面定义的列表,输出将为 [6,2,10]。

data = [[1,2,3], [2], [1, 2, 3, 4]]
output =[]
total = 0
for row in data:
  for val in row[0:len(row)]:
   total += val
output.append(total)
print(output)

然而,这个程序的结果是 [6, 8, 18]。任何帮助,将不胜感激。

标签: pythonlistloopsiteration

解决方案


使用list comprehension.

list 中的每个元素都是可迭代的,这一事实是sum该任务的最佳选择。

>>> data = [[1,2,3], [2], [1, 2, 3, 4]]
>>> [sum(d) for d in data]
[6, 2, 10]

现在,如果你想知道你的问题是什么......

累加器放在数据循环之后,并在每个行循环之后输入列表

>>> data = [[1,2,3], [2], [1, 2, 3, 4]]
>>> output = []
>>> for row in data:
...     total = 0
...     for val in row[0:len(row)]:
...         total += val
...     output.append(total)
...
>>> output
[6, 2, 10]

推荐阅读