在这个帖子中,以下代码片段可以使用。
请参考此答案
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
请参考此答案
在执行
for a[-1] in a
时,实际上是遍历整个列表并将当前元素的值临时存储到a[-1]
中。
同样地,我认为执行 for a in a
时,应该遍历整个列表并将当前元素的值临时存储到 a
中,因此 a
的值可能是 0
,无法进行迭代,接下来的迭代会抛出 TypeError
异常。然而,结果如下所示。
>>> a = [0, 1, 2, 3]
>>> for a in a:
... print a
...
0
1
2
3
>>> a
3
如何理解IT技术?
a[-1]
可以改变迭代器对象
吗? - zangw迭代器对象
是在for
循环中创建的,所以a[-1]
会改变原始对象,但是for a in a:
只会改变迭代器对象
。 - zangwfor a in a:
实际上是for a in iter(a):
。因此,在每次迭代中,从迭代器中检索的值都绑定到a
上。 - thefourtheyea
中。但这只是使a
具有不同的值,指向a
的原始列表对象仍将保留在内存中,因为迭代器对象仍在使用它。 - thefourtheye