【问题标题】:Create new list by adding the elements of three lists together - associated error (PYTHON)通过将三个列表的元素添加在一起来创建新列表 - 相关错误(PYTHON)
【发布时间】:2015-03-03 00:51:27
【问题描述】:

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

我该如何解决这个问题?

【问题讨论】:

  • for i,j,k in zip(a,b,c):

标签: python list append unpack


【解决方案1】:

试试这样:

>>> 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]

【讨论】:

  • @JoranBeasley 是的,python 3 需要调用列表
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多