我有一些数字列表:
[1, 2, 3, 4, 5]
[2, 3, 4, 5, 6]
[3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
我如何添加这些列表的元素,假设我使用的所有列表都是相同的长度?
以下是我希望从上述列表中获得的输出类型.
[6, 9, 12, 15, 18]
Run Code Online (Sandbox Code Playgroud)
我知道我需要一种循环 - 但我怎么能优雅地做到这一点?
Mar*_*ers 31
试试这个功能样式代码:
>>> map(sum, zip(*lists))
[6, 9, 12, 15, 18]
Run Code Online (Sandbox Code Playgroud)
该zip
函数匹配具有相同索引的元素.
>>> zip(*lists)
[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6), (5, 6, 7)]
Run Code Online (Sandbox Code Playgroud)
看到它在线工作:ideone
请注意,在Python 3.x中,map
不再返回列表.如果您需要该列表,请参阅以下问题:
(你可以打电话list
).
>>> lis=[[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7]]
>>> [sum(x) for x in zip(*lis)]
[6, 9, 12, 15, 18]
Run Code Online (Sandbox Code Playgroud)
使用numpy:
>>> seq = np.array([
... [1,2,3,4,5],
... [2,3,4,5,6],
... [3,4,5,6,7]])
>>> np.sum(seq,axis=0)
array([ 6, 9, 12, 15, 18])
Run Code Online (Sandbox Code Playgroud)
假设:
a = [1,2,3,4,5]
b = [2,3,4,5,6]
c = [3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)
这样做:
[sum(n) for n in zip(*[a, b, c])]
Run Code Online (Sandbox Code Playgroud)