基于2个列表的列表理解

时间:2014-08-20 19:39:52

标签: python list list-comprehension

鉴于AB是整数列表,您将如何添加单个元素并使用它们的总和创建新列表?这段代码有什么问题,你会怎么做?错误分别是:

  

ValueError:要解压缩的值太多

  

NameError:名称'b'未定义

C = [a+b for (a,b) in (A,B)]

C = [a+b for a in A, b in B]

2 个答案:

答案 0 :(得分:6)

尝试这一点,假设两个列表的大小相同:

C = [a+b for (a,b) in zip(A,B)]

这里的诀窍是使用zip()内置函数来成对地连接两个列表。

答案 1 :(得分:0)

您可以使用map,sum和zip:

>>> A=[1,2,3]
>>> B=[10,20,30]
>>> map(sum, zip(A, B))
[11, 22, 33]

如果您的列表长度不同,则可以使用值为0的izip_longest作为填充值:

>>> from itertools import izip_longest
>>> A=[1,2,3]
>>> B=[10,20,30,40]
>>> map(sum, izip_longest(A, B, fillvalue=0))
[11, 22, 33, 40]
>>> map(sum, izip_longest(A, B, [100], fillvalue=0))
[111, 22, 33, 40]