Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在程序中添加列表的总和?(python)_Python_List_Sum - Fatal编程技术网

如何在程序中添加列表的总和?(python)

如何在程序中添加列表的总和?(python),python,list,sum,Python,List,Sum,比如说, a = ([1,2,3],[4,5,6],[7,8,9]) 返回的总和应=45,以嵌套方式使用: >>> 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 >>> 如果需要,这里有一个on和一个on的引用。使用sum函数 s = 0

比如说,

a = ([1,2,3],[4,5,6],[7,8,9])
返回的总和应=45,以嵌套方式使用:

>>> 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
>>>
如果需要,这里有一个on和一个on的引用。

使用sum函数

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

print s
这假设列表只包含充满数字的列表。如果你想变得更聪明,你需要做一个函数

print reduce (lambda x, y: x + y, map(sum,a))
mapsum,a给出:[6,15,24] lambda x,y:x+y是一个将输入x,y相加的函数 将各条目的总和减至45


此外,基于相同的前提,summapsum、a也可以使用更简单的语法,但是reduce和lambda仍然是需要了解的好东西。

这里还有一个尚未提出的答案:

from itertools import chain
a = ([1,2,3],[4,5,6],[7,8,9])
sum(chain(*a))
这将使用与以下各项相加的总和:

生成一个迭代器,从第一个iterable返回元素,直到 它已耗尽,然后继续下一个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])
sum([] + [1,2,3] + [4,5,6] + [7,8,9])
内部总和通过将子列表添加到空列表中来展平列表-相当于

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

你能解释一下链式函数吗?看起来不错..我明白了。。很好的功能。我喜欢使用reduce,但不喜欢map。那么reducelambda total,next:total+sumnext,a,0@PeterGibson似乎不必要地令人费解。地图怎么了?我是一个粉丝,习惯map-reduce范例很好。python上的map构建了一个新的列表,这个列表可能会很慢,而且有点占用内存。不过我还是同意这更简单。事实上,看起来Python 3中不再是这种情况,所以我收回我的建议:@PeterGibson是的,他们改变了地图,可能是为了更好。