在Python中,如何对嵌套列表求和:[[1,0],[1,1],[1,0]]→[3,1]

Dan*_*l F 3 python list

我有一个阵列的形式

a = [[1, 0], [1, 1], [0, 0], [0, 1], [1, 0]]
Run Code Online (Sandbox Code Playgroud)

我需要在嵌套列表中对相同索引的所有值求和,以便上面得出

[3,2]
Run Code Online (Sandbox Code Playgroud)

这可以通过以下代码来实现

b = [0]*len(a[0])
for x in a:
  b = map(sum, zip(b,x))
Run Code Online (Sandbox Code Playgroud)

由于a包含数百个列表,我想知道是否有更好的方法来做到这一点.这些嵌套列表在每个运行中总是具有相同的长度,在上面的示例2中,但它可能只是1或3或更多,因此初始化b[0]*len(a[0]).

不同长度的示例如下:

# nested lists always have 3 items
a = [[1, 0, 1], [1, 1, 1], [0, 0, 1], [0, 1, 1], [1, 0, 0]]
# result: [3, 2, 4]

# nested lists always have 1 item
a = [[1], [1], [0], [0], [1]]
# result: [3]

# mixed lengths would never happen
a = [[1], [0,1], [0], [0,1,1]] # no, this not!
Run Code Online (Sandbox Code Playgroud)

Sel*_*cuk 9

您可以简单地转置初始矩阵并对每一行求和:

b = [sum(e) for e in zip(*a)]
Run Code Online (Sandbox Code Playgroud)