2013-03-17 72 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

相关问题