zoukankan      html  css  js  c++  java
  • python 迭代器 iter多次消费

    问题

    Python 中的迭代器是我们经常使用的迭代工具, 但其只能消费一次,再次消费便会出现 StopIteration 报错。

    解决方案

    封装了一个类,当迭代器使用完后再次初始化。

    代码

    class RepeatDataLoader():
        def __init__(self):
            self.data_iter = self.data_loader()
            self.renew_epoch = False
    
        def __next__(self):
            try:
                batch = self.data_iter.__next__()
                self.renew_epoch = False
            except StopIteration:
                self.data_iter = self.data_loader()
                batch = self.data_iter.__next__()
                self.renew_epoch = True
            return batch
        
        @staticmethod
        def data_loader():
            for i in range(5):
                yield i
    
    def checkIter(myIter):
        for _ in range(15):
            a = next(myIter)
            print (a)
    
    if __name__ == "__main__":
        oneIter = RepeatDataLoader.data_loader()
        repeatIter = RepeatDataLoader()
        checkIter(repeatIter)
    
    
  • 相关阅读:
    css 旋转
    html 旋转
    链表和数组的区别
    hashmap
    【java开发系列】—— 自定义注解
    java不确定参数个数方法例子
    mysql 删除
    linux下常用命令
    php的几种算法(转载)
    数据容器
  • 原文地址:https://www.cnblogs.com/Fosen/p/12609305.html
Copyright © 2011-2022 走看看