- 此问题在此处已有答案**:
Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
六年前关闭了。
把iter.转换成list好像把iter索引移到了最后一个元素,为什么?
l = iter([1, 2, 3])
x = list(l)
print l.next()
错误信息:
Traceback (most recent call last): print l.next()
停止迭代
1条答案
按热度按时间z31licg01#
因为首先,你要创建一个新对象;其次,迭代器对象在内存中没有它的所有项,它按需生成项,一旦你到达了末尾,就没有回头路了。这就是为什么他们称它为一次性可迭代的。因此,当你在迭代器上调用
list
时,你是在通过消耗迭代器并将其项保留在列表中来创建新的列表对象。为了更好地演示,它执行如下操作: