Python中’for a中的[-1]和’中a’之间的区别?
作者:互联网
在此post中,以下代码片段可以正常工作.
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
参见本answer
While doing
for a[-1] in a
, you actually iterate through the list and temporary store the value of the current element intoa[-1]
.
同样,我认为在a中做一个,它应该遍历列表并临时存储当前元素的值为a,因此a的值可能为0,并且不可迭代,那么下一次将抛出TypeError异常迭代.但是,结果如下.
>>> a = [0, 1, 2, 3]
>>> for a in a:
... print a
...
0
1
2
3
>>> a
3
怎么理解呢?
解决方法:
引用official documentation on for
loop,
An iterator is created for the result of the expression_list. The suite is then executed once for each item provided by the iterator, in the order of ascending indices.
因此,当您迭代对象时,会创建一个迭代器对象并用于迭代.这就是为什么原始对象不会丢失,至少在循环运行之前.
在您的情况下,当执行a:中的a时,会为第一个创建迭代器对象,并从迭代器对象中检索这些值.即使循环将名称a绑定到每次迭代的某个其他值,迭代器对象仍然保持对原始列表对象的引用,并从中提供值.这就是为什么你没有收到任何错误.
标签:python,for-loop,python-internals 来源: https://codeday.me/bug/20190628/1313318.html