有没有办法让python中的迭代器指向该项而不增加迭代器本身?例如,我将如何使用迭代器实现以下内容:
looking_for = iter(when_to_change_the_mode)
for l in listA:
do_something(looking_for.current())
if l == looking_for.current():
next(looking_for)
答案 0 :(得分:13)
迭代器无法获得当前值。如果你想要它,请自己保留对它的引用,或者包装你的迭代器以保留它。
答案 1 :(得分:5)
looking_for = iter(when_to_change_the_mode)
current = next(looking_for)
for l in listA:
do_something(current)
if l == current:
current = next(looking_for)
问题:
如果在迭代器的末尾怎么办? next
函数允许使用默认参数。
答案 2 :(得分:3)
我认为没有内置方式。将缓冲区中的迭代器包装在缓冲一个元素的自定义迭代器中非常容易。
答案 3 :(得分:0)
当我需要这样做时,我通过创建如下类来解决了该问题:
class Iterator:
def __init__(self, iterator):
self.iterator = iterator
self.current = None
def __next__(self):
try:
self.current = next(self.iterator)
except StopIteration:
self.current = None
finally:
return self.current
这样,您可以像使用标准迭代器一样使用next(itr),并且可以通过调用itr.current来获取当前值。