Python列表理解改变了初始变量

时间:2014-01-14 20:50:13

标签: python list python-2.7 list-comprehension

我注意到,当您对预先存在的列表运行列表解析时,列表在该过程之后保持不变。

但是,如果理解中的本地名称相同,则是您的初始变量。

为什么会这样?

示例:

>>> y=[1,2,3,4,5]

>>> [X**2 for X in y]
[1, 4, 9, 16, 25]
>>> y
[1, 2, 3, 4, 5]

>>> [y**2 for y in y]
[1, 4, 9, 16, 25]
>>> y
5

如您所见,在第二个示例中,y已更改为整数5

1 个答案:

答案 0 :(得分:2)

您实际上重新绑定y以包含原始y的最后一个值。

与以下内容没有什么不同:

In [18]: [x for x in range(5)]
Out[18]: [0, 1, 2, 3, 4]

In [19]: x
Out[19]: 4

除了您的代码使用y两个不同的东西,混淆了这个问题。