【发布时间】:2016-07-29 12:09:32
【问题描述】:
让it 成为python 中的可迭代元素。
在什么情况下,it 的变化会在 it 上的循环内反映出来?或更直截了当:这样的事情什么时候起作用?
it = range(6)
for i in it:
it.remove(i+1)
print i
导致 0,2,4 被打印(显示循环运行 3 次)。
另一方面是
it = range(6)
for i in it:
it = it[:-2]
print it
导致输出:
[0,1,2,3]
[0,1]
[]
[]
[]
[],
显示循环运行 6 次。我想这与就地操作或变量范围有关,但我不能 100% 确定。
澄清:
一个例子,这是行不通的:
it = range(6)
for i in it:
it = it.remove(i+1)
print it
导致打印“None”并抛出错误(NoneType 没有属性“remove”)。
【问题讨论】:
-
在第二个示例中,您没有更改任何可迭代对象(也没有可迭代对象,因为那不是一回事)。