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

时间:2015-03-03 00:51:27

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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:8)

尝试这样:

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

对于python 3x,你需要调用list:

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

答案 1 :(得分:1)

虽然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)]