2012-02-29 74 views

回答

11

你可以做那么容易,因为

sum(map(sum, my_list)) 

或可替代

sum(sum(x) for x in my_list)) 

收工吧,如果你不希望超过2个维度。请注意,由于使用了map(),第一种解决方案很可能不是最快的(如执行时间)解决方案。基准并根据需要进行比较。

最后,如果您发现自己使用多维数组,请考虑使用NumPy及其优越的数组友好函数。这里是你的问题的简短摘录:

import numpy as np 

my_list = np.array([[1,2,3,4], [2,4,5,6]]) 
np.sum(my_list) 

这将适用于您的数组可能有的任何数量的维度。

+0

“地图”本身并不慢。 – Marcin 2012-02-29 11:27:43

+0

@Marcin它在Python 2.x. – katrielalex 2012-02-29 11:48:20

+0

@katrielalex:数字不赞同你:http://ideone.com/4RXfR vs http://ideone.com/6tOEJ – Marcin 2012-02-29 12:21:06

3
>>> sum ([ sum(x) for x in [[1,2,3,4], [2,4,5,6]] ]) 
27 
+0

使用发电机不是列表理解('()'不''[]')。 – katrielalex 2012-02-29 15:21:45

+0

@katrielalex:你是对的,以及mindcorrosive。我采取OP代码测试,然后忘了删除正方形。 – CapelliC 2012-02-29 15:31:27

3

使用itertools另一种解决方案:

>>> from itertools import chain 
>>> my_list = [ [1,2,3,4], [2,4,5,6] ] 
>>> sum(chain(*my_list)) 
27 
1
>>> from itertools import chain 
>>> my_list = [[1,2,3,4], [2,4,5,6]] 
>>> sum(chain.from_iterable(my_list)) 
27 
0

您可以使用和先添加内部列表一起再总结产生的扁平列表:

>>> my_list = [ [1,2,3,4], [2,4,5,6] ] 

>>> sum(my_list, []) 
[1, 2, 3, 4, 2, 4, 5, 6] 

>>> sum(sum(my_list, [])) 
27 
+0

你的答案是否在此处添加了其他答案? – rayryeng 2015-12-26 03:00:07