【发布时间】:2017-08-29 14:42:47
【问题描述】:
我正在努力学习 Python,并开始玩一些代码:
a = [3,4,5,6,7]
for b in a:
print(a)
a.pop(0)
输出是:
[3, 4, 5, 6, 7]
[4, 5, 6, 7]
[5, 6, 7]
我知道这不是在循环时更改数据结构的好习惯,但我想了解 Python 在这种情况下如何管理迭代器。
主要问题是:如果我正在更改 a 的状态,它如何知道它必须完成循环?
【问题讨论】:
-
你也应该打印
b,这会给你更多的线索 -
Python 按需循环遍历列表。意味着在每次迭代中,它将相应的项目分配给一次性变量并继续迭代,直到遇到列表末尾或引发
IndexError。回答python如何知道如果您要更改列表,它必须完成循环,这一切都基于遇到最后一项或提出IndexError。通过更改列表,您可以缩短或延长循环。 -
Python 不承诺这种行为。未来的版本可能会给你一个类似字典的
RuntimeError: list changed size during iteration。
标签: python for-loop data-structures