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)
    
    
  • 相关阅读:
    jquery
    模板库
    Luogu P1902 刺杀大使
    8.20模拟赛再次观光记
    Luogu P1122 最大子树和
    Luogu P1470 最长前缀 Longest Prefix
    8.18爆炸记
    Luogu P1388 算式
    Luogu P1103 书本整理
    8.17
  • 原文地址:https://www.cnblogs.com/Fosen/p/12609305.html
Copyright © 2011-2022 走看看