通过将三个列表的元素相加来创建新列表 - 关联错误 (PYTHON)

Create new list by adding the elements of three lists together - associated error (PYTHON)

我有 3 个列表,比如:

a = [1,2,3,4,5]

b = [0,2,4,6,8]

c = [2,3,4,5,6]

我想创建一个将各个元素相加的新列表,即

d = [3,7,11,15,19]

我的代码:

d = []

for i,j,k in a,b,c:

     d.append(i+j+k)

但是,我一直收到错误消息:

ValueError: too many values to unpack

我该如何解决这个问题?

这样试试:

>>> map(sum, zip(a,b,c))
[3, 7, 11, 15, 19]

对于 python 3x 你需要调用列表:

>>> list(map(sum, zip(a,b,c)))
[3, 7, 11, 15, 19]

虽然 Hackaholic 的解决方案非常出色(并且非常适合函数式编程),但这里有一个使用列表理解的替代方案。

关键成分是 zip(a,b,c)returns a sequence of tuples containing the ith elements of a, b, c。正如 Joran Beasley 提到的,您的代码只需添加 zip:

d = []
for i,j,k in zip(a,b,c):
     d.append(i+j+k)

从这里很容易进入列表理解版本:

d = [i+j+k for i,j,k in zip(a,b,c)]

事实上,您甚至不需要将元组解包为 i, j, k,而是可以直接对元组求和:

d = [sum(tup) for tup in zip(a,b,c)]