通过将三个列表的元素添加到一起来创建新列表-关联错误(PYTHON)
我有3个清单,比如:通过将三个列表的元素添加到一起来创建新列表-关联错误(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,
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需要调用列表