Ale*_*der 12 python arrays list-comprehension
如何在python数组中添加列的所有值?理想情况下,我想这样做而不导入任何额外的库.
input_val = [[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]
output_val = [3, 6, 9, 12, 15]
Run Code Online (Sandbox Code Playgroud)
我知道我可以在嵌套的for循环中完成,想知道是否有更好的方法(如列表理解)?
Ste*_*uch 21
zip并且sum可以做到这一点:
码:
[sum(x) for x in zip(*input_val)]
Run Code Online (Sandbox Code Playgroud)
zip获取输入列表的内容并对其进行转置,以便同时生成所包含列表的每个元素.这允许sum查看每个包含列表的第一个元素,然后下一次迭代将获得每个列表的第二个元素,等等...
测试代码:
input_val = [[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]
print([sum(x) for x in zip(*input_val)])
Run Code Online (Sandbox Code Playgroud)
结果:
[3, 6, 9, 12, 15]
Run Code Online (Sandbox Code Playgroud)
如果你决定使用任何库,numpy很容易做到这一点:
np.sum(input_val,轴= 0)
# In Python 3.x
>>> list(map(sum, zip(*input_val)))
[3, 6, 9, 12, 15]
# explicitly type-cast it to list as map returns generator expression
# In Python 2.x, explicit type-casting to list is not needed as `map` returns list
>>> map(sum, zip(*input_val))
[3, 6, 9, 12, 15]
Run Code Online (Sandbox Code Playgroud)