我注意到,当您对预先存在的列表运行列表解析时,列表在该过程之后保持不变。
但是,如果理解中的本地名称相同,则是您的初始变量。
为什么会这样?
示例:
>>> 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
。
答案 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
两个不同的东西,混淆了这个问题。