您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使python迭代器向后退?

使python迭代器向后退?

不,通常您不能使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
python 2022/1/1 18:26:54 有423人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶