为什么将迭代器转换为列表会将迭代器移动到最后一个索引

时间:2016-11-07 08:51:08

标签: python iterator

似乎转换它。列表将iter索引移到最后一个元素,为什么?

<Grid VerticalAlignment="Top">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
</Grid>

错误讯息:

  

追踪(最近一次通话):       print l.next()

     

StopIteration异常

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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