我有以下代码:
y = [sum(x) for x in ([0, 1, 2], [10, 11, 12], [20, 21, 22])]
print(y)
输出为:[3,33,63]
我所追求的是按每个列表中的位置求和,所以我想要的输出是:
[30, 33, 36]
0 + 10 + 20 = 30
1 + 11 + 21 = 33
2 + 12 + 22 = 36
我做错了什么?
答案 0 :(得分:2)
zip
:
y = [sum(x) for x in zip([0, 1, 2], [10, 11, 12], [20, 21, 22])]
print(y)
# [30, 33, 36]
答案 1 :(得分:-1)
如果你想通过索引获得单笔金额,你可以编写一个方法来获取:
def sum_by_index(array_2D,idx):
s = 0
for row in array_2D:
s += row[idx]
return s
如果你想要所有的总和,你可以做同样的事情但是一次性完成:
def sums_by_index(array_2D):
s = array_2D[0]
for row in array_2D[1:]:
for i,entry in enumerate(row):
s[i] += entry
return s