不,通常您不能使Python迭代器向后移动。但是,如果您只想退一步,则可以尝试如下操作:
def str(self, item): print item prev, current = None, self.__iter.next() while isinstance(current, int): print current prev, current = current, self.__iter.next()
然后,您可以随时在中访问上一个元素
prev。
如果确实需要双向迭代器,则可以自己实现一个迭代器,但它可能会带来比上述解决方案更多的开销:
class bidirectional_iterator(object): def __init__(self, collection): self.collection = collection self.index = 0 def next(self): try: result = self.collection[self.index] self.index += 1 except IndexError: raise StopIteration return result def prev(self): self.index -= 1 if self.index < 0: raise StopIteration return self.collection[self.index] def __iter__(self): return self



