如何在程序中添加列表总和? (蟒蛇)

时间:2013-11-30 05:04:12

标签: python list sum

例如,

a = ([1,2,3],[4,5,6],[7,8,9])
返回的总和应该= 45

6 个答案:

答案 0 :(得分:4)

以嵌套方式使用sum

>>> a = ([1,2,3],[4,5,6],[7,8,9])
>>> sum(sum(x) for x in a)
45
>>> # This also works
>>> sum(map(sum, a))
45
>>>

如果您需要,请参阅map以及generator expressions上的参考。

答案 1 :(得分:3)

这是另一个尚未提出的答案:

from itertools import chain
a = ([1,2,3],[4,5,6],[7,8,9])
sum(chain(*a))

这会将sumitertools.chain()

一起使用
  

创建一个迭代器,返回第一个iterable中的元素,直到   它耗尽,然后进入下一个迭代,直到所有的   迭代用尽了。用于处理连续序列   单一序列。相当于:

def chain(*iterables):
    # chain('ABC', 'DEF') --> A B C D E F
    for it in iterables:
        for element in it:
            yield element

通过将*a传递给链,a被扩展,以便其成员成为链的参数

sum(chain([1,2,3], [4,5,6], [7,8,9])

我们最终得到一个扁平列表(实际上可迭代),相当于

sum([1, 2, 3, 4, 5, 6, 7, 8, 9])

答案 2 :(得分:1)

使用和函数

s = 0
for i in a:
    s += sum(i)

print s

答案 3 :(得分:1)

a = ([1,2,3],[4,5,6],[7,8,9])
total = 0

for i in a:
  total += sum(i)

这假定列表中只包含满是数字的列表。如果你想比这更聪明,你需要做一个功能。

答案 4 :(得分:1)

print reduce (lambda x, y: x + y, map(sum,a))

map(sum, a)给出:[6, 15, 24]
lambda x,y: x + y是一个添加输入xy的函数 reduce将条目加在一起得到45。

此外,基于相同的前提,sum(map(sum,a))也可以使用更简单的语法,但reducelambda仍然是值得了解的好事。

答案 5 :(得分:0)

a = [1,2,3],[4,5,6],[7,8,9]
sum(sum(a, []))

内部sum通过将子列表添加到空列表来展平列表 - 相当于

sum([] + [1,2,3] + [4,5,6] + [7,8,9])