13

有没有一种简单的方法来计算python中N个列表的元素总和?我知道如果我们定义了 n 个列表(称为第 i 个列表c_i),我们可以这样做:

z = [sum(x) for x in zip(c_1, c_2, ...)]

例如:

c1 = [1,2]
c2 = [3,4]
c3 = [5,6]
z  = [sum(x) for x in zip(c1,c2,c3)]

这里z = [9, 12]

但是如果我们没有c_i定义而是c_1...c_n在一个列表中C呢?

有没有类似的方法可以找到z我们是否有C

我希望这很清楚。

已解决:我想知道 * 运算符的全部含义...谢谢!

4

2 回答 2

35

只需这样做:

[sum(x) for x in zip(*C)]

在上面,C是列表c_1...c_n。正如评论中的链接中所解释的(感谢@kevinsa5!):

*是“splat”运算符:它将一个列表作为输入,并将其扩展为函数调用中的实际位置参数。

有关更多详细信息,请查看“解包参数列表”下的文档并阅读有关调用的信息(感谢@abarnert!)

于 2013-10-09T02:00:16.787 回答
2

这与 Óscar López 的答案并没有什么不同,而是使用itertools.imap而不是列表理解。

from itertools import imap
list(imap(sum, zip(*C))
于 2013-10-09T02:39:44.773 回答