2012-02-29 69 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