如何总结数组列表中的每个元素?

时间:2016-10-07 17:39:13

标签: python arrays list

有点写出代码。

例如,如果我有一个数组:

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

我得到索引大小错误。 我怎么能这样做呢?

2 个答案:

答案 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,得到答案。