添加Zip函数时在后面列出理解逻辑

时间:2018-09-24 23:28:18

标签: python-3.x

我下面有一个python代码

    x = [1, 2,1]
    y = [0]
    lis=[l+r for l,r in zip(x+y,y+x)]
    lis

输出为[1,3,3,1] 不确定如何运作

1 个答案:

答案 0 :(得分:3)

让我们分解一下。

x+y

y+x

x+y使用元素[1, 2, 1, 0]创建一个新列表,而y+x将创建[0, 1, 2, 1]

zip(x+y,y+x)

zip然后将2个列表合并为一个元组列表:[(1, 0), (2, 1), (1, 2), 0, 1)]

[l+r for l,r in zip(x+y,y+x)]

现在我们知道zip(x+y,y+x)生成的内容了,它只是一个列表函数,它将元组(l+r部分)中的2个值再次加到一个数字中,然后将其存储回一个列表中:[1+0, 2+1, 1+2, 0+1] = [1, 3, 3, 1]