考虑一下:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
因此,正如预期的那样,推进迭代器是通过变更相同的对象来处理的。
在这种情况下,我期望:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
跳过每一个第二个元素: 对 next
的调用应该提前迭代器一次,然后循环的隐式调用应该提前迭代器第二次——第二次调用的结果将被分配给 i
。
循环打印列表中项目的 所有,而不跳过任何项目。
我的第一个想法是,这可能会发生,因为循环在传递的内容上调用 iter
,这可能会产生一个独立的迭代器——但事实并非如此,因为我们有 iter(a) is a
。
那么,在这种情况下,为什么 next
似乎没有提前迭代器呢?