我想知道next((方法在python中是如何工作的?
lst=[1,2,3,4]
it=iter(lst)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
Output
1
2
3
4
我的问题:
- 当我们在迭代器上调用next((方法时,next(((方法是否返回迭代器返回的值。如果是,迭代器如何从iterable中获取值
- 当我们在迭代器上调用next((方法时,next(
- next((方法跟踪值(比如在哪个调用中返回哪个值(还是迭代器跟踪值,如果迭代器追踪值,迭代器是如何做到的?我的意思是迭代器如何跟踪值
请澄清我的困惑。
所有可迭代项都定义了一个名为__iter__
的函数。在这里,我做了一个名为Foo
的类,它一直从1开始计数。
class Foo:
def __init__(self):
self.count = 1
def __iter__(self):
while True:
yield self.count
self.count += 1
bar = Foo()
当我做it = iter(bar)
时,它会检查bar是否有__iter__
函数。
然后,当我执行next(it)
时,它会调用__iter__
函数并运行,直到它达到yield
。然后,它返回该值并暂停。
当您再次调用next(it)
时,它会返回到__iter__
中的位置并运行,直到再次达到yield
。如果退出__iter__
函数,则会引发StopIteration
错误。