通过将三个列表的元素相加来创建新列表 - 关联错误 (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)]
我有 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)]