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)
4

4 回答 4

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直接传递给...

于 2013-03-17T19:32:25.653 回答
7

您可以在一行中完成,listAdder()与调用相同sum()

sum(sum(x) for x in lists)
于 2013-03-17T19:32:29.940 回答
2

您还可以避免列表列表,直接求和:

sum(n+o+p)

于 2013-03-17T19:53:51.187 回答
1

尽可能短,但效率不高

sum(sum(lists, []))
于 2013-03-17T19:34:04.530 回答