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

通过将三个列表的元素添加到一起来创建新列表-关联错误(PYTHON),python,list,append,unpack,Python,List,Append,Unpack,我有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:要解压缩的值太多 如何修复此问题?尝试以下方法: >>> map(sum, zip(a,b,c)) [3, 7,

我有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:要解压缩的值太多

如何修复此问题?

尝试以下方法:

>>> 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)
,它是一种特殊的编码。正如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)]

对于zip中的i、j、k(a、b、c):
@JoranBeasley-yep for python 3需要调用列表