在列表组件列表中明智地添加或减去元素

Adding or subtracting elements within list of list component wise

如何在列表组件中明智地添加列表元素?

p=[[1,2,3],[1,0,-1]]

我尝试了以下方法:

list(map(sum,zip(p[0],p[1])))

会得到我 [2,2,2] 这正是我需要的。但是如何将它扩展为可变数量的列表呢?例如,p=[[1,2,3],[1,0,-1],[1,1,1]] 应该产生 [3,3,3].

我想到的解决方案如下:

import pandas as pd
p=[[1,2,3],[1,0,-1],[1,1,1]]
list(pd.DataFrame(p).sum())

有没有更“Pythonic”的方法来解决这个问题?

对解包列表使用 *

a = list(map(sum,zip(*p)))
print (a)
[3, 3, 3]

在 numpy 中的解决方案类似于 pandas:

a = np.array(p).sum(axis=0).tolist()
print(a)
[3, 3, 3]

您可以使用 * 来解压列表并使用 sum 来总结。 如果您对地图功能不满意,可以这样做:

p = [[1, 2, 3], [4, 5, 6], [-5,-7,-9]]

sum_list = [sum(elem) for elem in zip(*p)]

print(sum_list)