【发布时间】:2021-01-03 21:26:01
【问题描述】:
如果您在 for 循环中复制迭代器,则迭代会恢复正常。例如:
ita = iter(range(5))
for a in ita:
print(a)
if a == 2:
ita, itb = tee(ita)
打印0 1 2 3 4。但是,如果您迭代第二个副本,原始迭代器也会耗尽:
ita = iter(range(5))
for a in ita:
print(a)
if a == 2:
ita, itb = tee(ita)
for b in itb:
pass
只打印0 1 2。
据我了解,对复制的迭代器进行迭代不应该影响原始迭代器,所以我不知道为什么会这样。任何帮助将不胜感激
【问题讨论】:
-
(1) 尽管您在 for 循环中设置了
ita,但这不会影响for a in ita中的ita,因为它仅在循环首先进入。 (2)tee返回的迭代器相互独立,但tee在读取返回的迭代器之一时必须从其输入迭代器中读取以填充其返回的迭代器。 -
这可以是一个答案..