为什么下一个(iter(x))没有进入下一个可迭代的?

问题描述 投票:2回答:2

大家好我刚开始学习如何编写python代码。我很困惑,为什么迭代代码工作时我将L分配给iter(x)然后next(L)迭代遍历x列表,如下所示:

x=[1,2,3,4,5]
>>> L=iter(x)
>>> next(L)
1
>>> next(L)
2
>>> next(L)
3
>>> next(L)
4
>>> next(L)
5
>>> next(L)

但是当我手动编写下一个(iter(x))迭代x列表时,它不起作用:

next(iter(x))
1
>>> next(iter(x))
1
>>> next(iter(x))
1

如果我使用的任何技术术语不准确,我会提前道歉,但我希望你们理解我的问题,并就此问题向我提供一些指导。谢谢!

python iterator iteration
2个回答
0
投票

在Python中,迭代器是在创建后用完的对象。在第一个示例中,您将创建一个迭代器并提取其元素,直到它耗尽为止。在第二个示例中,每次都创建一个新的迭代器,提取其第一个元素,然后丢弃它(通过垃圾收集器)。


1
投票
next(iter(x))

相当于

it = iter(x)
next(it)

因此,在第二种情况下,您每次重复这两个指令,其中您首先从iterator创建iterable,并且您应用next()函数获取每次第一个元素。 所以你永远不会消耗它,而是每次都重新创建它。

© www.soinside.com 2019 - 2024. All rights reserved.