如何多次使用生成器

我们知道,生成器返回的迭代器只能被从头到尾遍历一遍,之后再遍历就会报StopIteration异常,那么怎么样才能重复使用生成器呢。

其实只要写一个类,把生成器定义在类的__iter__方法中,之后重复使用这个类的实例就行了,因为诸如sum()、for in 循环等函数都是调用了对象内置的__iter__方法来获得迭代器的。

class ReadVisits():

        def __init__(self.data):

                self.data = data

        def __iter__(self):

                for i in data:

                    yield i

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,981评论 0 9
  • 迭代、迭代器、生成器、协程、yield、greenlet、gevent、进程线程协程对比、gevent多任务图片下...
    Cestine阅读 502评论 0 0
  • 一、总体内容 1.1、协程的介绍 1.2、迭代器以及迭代器的应用 1.3、生成器(生成器与迭代器保存的都是生成数据...
    IIronMan阅读 874评论 0 1
  • 住的这个小区也建好几年了,怎么周围一直在装修,钻啊钻啊。于是开大音乐,挡住钻的声音,周期性重复的声音实在是乱人心绪...
    KevinCool阅读 842评论 1 1
  • 高歌吟诗阅读 331评论 0 1