这个问题非常清楚但只是一个例子:
a = [[1,2],[3,4],[5,6],[7,8]]
然后我想要的列表是:
a_new = [ 1+3+5+7 , 2+4+6+8]
列表中的列表总是具有相同的长度,当然我不仅要为两个维度执行此操作,还要为大数字n执行此操作。
到目前为止,我已尝试使用双循环但我完全失败了,所以非常感谢帮助。
答案 0 :(得分:4)
使用zip()
function将输入列表从行转换为列,然后sum()
这些列:
[sum(col) for col in zip(*a)]
演示:
>>> a = [[1,2],[3,4],[5,6],[7,8]]
>>> zip(*a)
[(1, 3, 5, 7), (2, 4, 6, 8)]
>>> [sum(col) for col in zip(*a)]
[16, 20]
答案 1 :(得分:0)
使用地图:
>>> a = [[1,2],[3,4],[5,6],[7,8]]
>>> map(sum, zip(*a))
[16, 20]
>>>
答案 2 :(得分:0)
不是使用map()
,zip()
或reduce()
,而是使用列表连接的纯列表推导方法:
[sum([x for x, y in a])]+[sum([y for x, y in a])]
>>> a = [[1,2],[3,4],[5,6],[7,8]]
>>> a_new = [sum([x for x, y in a])]+[sum([y for x, y in a])]
>>> a_new
[16, 20]
>>>