2013-03-17 100 views
4

有沒有比列在下面的代碼更容易將列表中的項目彙總在一起的方法?我是新來的,這似乎有些笨拙。更簡單的方法來添加多個列表項目?

n = [3,5,7] 
o = [4,10,8] 
p = [4,10,5] 

lists = [n, o, p] 

def sumList(x): 
    return sum(x) 


def listAdder(y): 
    count = 0 
    for item in y: 
     count += sumList(item) 
    return count 

print listAdder(lists) 

回答

10

喜歡的東西:

from itertools import chain 

n = [3,5,7] 
o = [4,10,8] 
p = [4,10,5] 

print sum(chain(n, o, p)) 
# 56 

這避免了創建項目的未必備單品,因爲你把它們傳遞給chain直接...

6

你可以做一個單行,listAdder()與致電sum()相同:

sum(sum(x) for x in lists) 
+1

或'總和(圖(總和,列表)) ' – jamylak 2013-03-17 19:38:43

+1

此解決方案應該有更多的投票,這非常簡單。 – jamylak 2013-03-17 19:45:37

1

儘量短,因爲它得到,不是很有效,雖然

sum(sum(lists, [])) 
2

您還可以避免列出的名單,只是直接總結:

sum(n+o+p)

+0

當然,這創建了幾個名單。通過應對來自所有列表的所有元素,其中一些也是多次。 – delnan 2013-03-17 20:17:54

相關問題