有点写出代码。
例如,如果我有一个数组:
a = ([0, 0, 1, 2], [0, 1, 1, 0], [0, 0, 1, 0], [1, 0, 1, 3], [0, 1, 1, 3])
如果我想添加每个项目的第一个元素,
用于返回0 + 0 + 0 + 1 + 0,0 + 1 + 0,0 + 0 ...
的列表我写了代码:
def test(lst):
sum = 0
test_lst = []
i = 0
while i in range(0, 4):
for j in range(0, len(lst)):
sum += lst[j][i]
test_lst.append(sum)
i += 1
return test_lst
我得到索引大小错误。 我怎么能这样做呢?
答案 0 :(得分:6)
sum(zip(*a)[0])
zip
是一个函数,它接受任意数量的n长度序列并返回n个元组(以及其他内容)。这些元组中的第一个具有传递给zip
的元组中第一个元素。 sum
将它们加在一起。
编辑:
在Python 3中,上述功能并不起作用。使用:
sum(next(zip(*a)))
代替。对于所有这些总和,
map(sum, zip(*a))
答案 1 :(得分:0)
a = ([0, 0, 1, 2], [0, 1, 1, 0], [0, 0, 1, 0], [1, 0, 1, 3], [0, 1, 1, 3])
尝试使用列表推导:
sum([item[0] for item in a])
上面的行获取元组中每个列表的第一个元素,然后将其放入临时列表中。然后我们在该临时列表上调用sum,得到答案。