Rya*_*yan 5 python for-loop infinite-loop
考虑以下Python代码片段:
x = 14
for k in range(x):
x += 1
Run Code Online (Sandbox Code Playgroud)
在执行结束时,x等于28.
我的问题:这段代码不应该永远循环吗?在每次迭代时,它会检查是否k小于x.但是,x在for循环中递增,因此它具有较高的值用于下一次比较.
range(x)不是"命令".它创建一个范围对象,循环遍历该范围.更改x不会更改使用它创建的所有对象.
>>> x = 2
>>> k = range(x)
>>> list(k)
[0, 1]
>>> x += 1
>>> list(k)
[0, 1]
Run Code Online (Sandbox Code Playgroud)
不会,range(x)将返回带有[0,1,2,3,4,5,6,7,8,9,10,11,12,13]项的列表,这些项将被迭代.每次循环体被评估时x的值都会发生变化,但这不会影响已经生成的列表.
换句话说,您将迭代的集合将只生成一次.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |