来自多个列表(两个以上)的Python总和值

时间:2018-10-08 13:29:28

标签: python list zip

寻找一种从多个列表中求和的pythonic方法: 我有以下列表列表:

a = [0,5,2]
b = [2,1,1]
c = [1,1,1]
d = [5,3,4]
my_list = [a,b,c,d]

我正在寻找输出:

[8,10,8]

我用过:

print ([sum(x) for x in zip(*my_list )])

但是zip仅在my_list中有2个元素时才有效。 有想法吗?

3 个答案:

答案 0 :(得分:3)

zip适用于任意数量的可迭代项:

>>> list(map(sum, zip(*my_list)))
[8, 10, 8]
当然,

大致等同于您的理解,

>>> [sum(x) for x in zip(*my_list)]
[8, 10, 8]

答案 1 :(得分:0)

Numpy有一个很好的方法,它也可以处理非常大的数组。首先,我们将my_list创建为一个numpy数组,如下所示:

import numpy as np
a = [0,5,2]
b = [2,1,1]
c = [1,1,1]
d = [5,3,4]
my_list = np.array([a,b,c,d])

要获取各列的总和,可以执行以下操作

np.sum(my_list, axis=0)

或者,行的总和可以通过

检索
np.sum(my_list, axis=1)

答案 2 :(得分:0)

我将其设置为numpy数组,然后沿轴0求和:

my_list = numpy.array([a,b,c,d])    
my_list.sum(axis=0)

输出:

[ 8 10  8]