【问题标题】:Why converting iterator to list move iterator to last index [duplicate]为什么将迭代器转换为列表将迭代器移动到最后一个索引[重复]
【发布时间】:2016-11-07 08:51:08
【问题描述】:

似乎转换 iter.列出将 iter 索引移动到最后一个元素,为什么?

l = iter([1, 2, 3])
x = list(l)
print l.next()

错误信息:

Traceback(最近一次调用最后一次): 打印 l.next()

停止迭代

【问题讨论】:

  • 因为它就是这样做的。你知道什么是迭代器对象吗?
  • 哦,原来如此!很抱歉给您带来不便。

标签: python iterator


【解决方案1】:

因为首先,您正在创建一个新对象。其次,迭代器对象在内存中没有它的所有项目,它会按需生成项目,一旦你到达终点,就没有回头路了。这就是为什么他们称它为一次性可迭代的。因此,当您在迭代器上调用 list 时,您正在通过使用迭代器并将其项目保留在列表中来创建新的列表对象。

为了更好的演示,它会执行以下操作:

In [8]: l = iter([1, 2, 3])

In [9]: x = [item for item in l]

In [10]: x
Out[10]: [1, 2, 3]

【讨论】:

  • 谢谢! @Kasramvd
猜你喜欢
  • 2020-05-18
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 2016-12-14
相关资源
最近更新 更多