python是否支持在iter中为i调用next(iter)呢?

python是否支持在iter中为i调用next(iter)呢?,python,for-loop,iterator,next,pep,Python,For Loop,Iterator,Next,Pep,问题:记录了打电话的事实 for i in iter: ... next(iter) 具有在for循环中向前跳过的效果。这是我可以依赖的已定义行为(例如,在某些PEP中)还是仅仅是一个可以在没有警告的情况下更改的实现事故?在for循环中,它总是调用迭代项的下一个 如果在for循环调用next之前调用next(),则会跳过(next)项 因此,可以这样说,只要for调用相同的方法(下一步),就可以在程序中实现这一点 到目前为止,即使在3.6中也实现了同样的功能。所以,不必担心。在

问题:记录了打电话的事实

for i in iter:
    ...
    next(iter)

具有在for循环中向前跳过的效果。这是我可以依赖的已定义行为(例如,在某些PEP中)还是仅仅是一个可以在没有警告的情况下更改的实现事故?

在for循环中,它总是调用迭代项的
下一个

如果在for循环调用next之前调用
next()
,则会跳过(next)项

因此,可以这样说,只要
for
调用相同的方法(下一步),就可以在程序中实现这一点


到目前为止,即使在
3.6
中也实现了同样的功能。所以,不必担心。

在for循环中,它总是调用迭代项的
下一个

如果在for循环调用next之前调用
next()
,则会跳过(next)项

因此,可以这样说,只要
for
调用相同的方法(下一步),就可以在程序中实现这一点


到目前为止,即使在
3.6
中也实现了同样的功能。因此,没有必要担心。

这取决于国际热核实验堆是什么。如果它是通过调用iter()创建的迭代器,那么是的,调用
next(iter)
也会推进迭代器:

>>> it = iter(range(4))
>>> for x in it:
        print(x)
        _ = next(it)

0
2
重要的是,
It
是一个迭代器(而不仅仅是任何iterable),因为for循环在内部也会对该对象调用
iter()
。由于迭代器(通常)在调用
iter(some_iterator)
时返回它们自己,所以这很好

这是个好主意吗?通常不会,因为它容易断裂:

>>> it = iter(range(3))
>>> for x in it:
        print(x)
        _ = next(it)

0
2
Traceback (most recent call last):
  File "<pyshell#21>", line 3, in <module>
    _ = next(it)
StopIteration

这取决于iter是什么。如果它是通过调用iter()创建的迭代器,那么是的,调用
next(iter)
也会推进迭代器:

>>> it = iter(range(4))
>>> for x in it:
        print(x)
        _ = next(it)

0
2
重要的是,
It
是一个迭代器(而不仅仅是任何iterable),因为for循环在内部也会对该对象调用
iter()
。由于迭代器(通常)在调用
iter(some_iterator)
时返回它们自己,所以这很好

这是个好主意吗?通常不会,因为它容易断裂:

>>> it = iter(range(3))
>>> for x in it:
        print(x)
        _ = next(it)

0
2
Traceback (most recent call last):
  File "<pyshell#21>", line 3, in <module>
    _ = next(it)
StopIteration

在您的示例中,
范围(0,3,2)
将suffice@Chris_Rands是的,不过我不想依赖这里的
range()
功能。我的观点是,这些方法适用于任何类型的iterablesuffice@Chris_Rands是的,不过我不想依赖这里的
range()
功能。我的观点是,这些方法适用于任何类型的iterable。