2012-11-24 41 views

回答

6

我想你想要內置sum函數。

>>> x = [1,2,5] 
>>> y = [2,3,9] 
>>> sum(x+y) 
22 

這是同樣的事情:

sum(x) + sum(y) 

,或者如果你愛itertools:

sum(itertools.chain(x,y)) 

後者2更有效率。


sum需要一個迭代器並將它的所有元素相加。與列表處理+會連接,所以當:

x+y 

讓你列表:

[1,2,5,2,3,9] 

這是迭代的,因此對於sum一個完美的候選人。


如果你有一大堆的名單,你可以讓這個更有意思:

>>> lists = [x,y] 
>>> sum(sum(lst) for lst in lists) 
22 

最後的形式是好的,因爲它擴展平凡高達列出任意數量的 - 只是不停將它們追加到lists列表中,直到您準備好總結爲止,然後在該列表中彈出該單行內容,然後完成。

當然,我想我們可以做同樣的事情用itertools還有:

sum(itertools.chain.from_iterable(lists)) 

正如你所看到的,你有好幾個選項一起玩(和學習!:)。

+1

或者,如果你想避免陣列串聯,'總和(X)+ SUM(Y)' – Xymostech

+0

@Xymostech - 在(x或甚至'總和(SUM(LST)的LST ,y))':) – mgilson

+0

那我們現在不要發瘋了...... :) – Xymostech

0
sm=0 
    for v in x+y: 
     sm=sm+v 
1
>>> list1 = [1,2,5] 

>>> list2 = [2,3,9] 

>>> zip_list = [(x + y) for x, y in zip(list1, list2)] 

>> zip_list 

[3, 5, 14] 

>>> sum(zip_list) 

22 
相關問題