【发布时间】:2013-05-24 18:40:26
【问题描述】:
考虑:
>>> 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 .
它没有。循环打印列表中的 all 项,而不跳过任何项。
我的第一个想法是这可能会发生,因为循环调用 iter 对其传递的内容,这可能会给出一个独立的迭代器 - 情况并非如此,因为我们有 iter(a) is a。
那么,为什么next 在这种情况下似乎没有推进迭代器?
【问题讨论】:
标签: python list iterator iteration