迭代器

StopIteration:停止迭代

class Cup(object):

    def __init__(self):        ''' 初始化函数,索引和数据初始化。 '''        self.index = 0        self.good = [1, 3, 5, 6]

    def __iter__(self):        ''' 这里固定返回对象自身self '''        return self

    def __next__(self):        '''        这里每次返回一个元素,需要自己写个循环。        最后当数据取完时一定要抛出StopIteration这个异常。        '''        # print(self.index)        if self.index < len(self.good):            data = self.good[self.index]            self.index += 1            return data        else:            raise StopIteration

cup = Cup()for c in cup:    print(c)

迭代器实现斐波那契

class Fibonacci(object):

    def __init__(self, n):        self.n = n  # 斐波那契有N项        self.index = 0  # 迭代器遍历时的索引        self.iterator = [0, 1]  # 列表法生成斐波那契数列        for i in range(2, self.n + 1):            self.iterator.append(self.iterator[i - 1] + self.iterator[i - 2])    def __iter__(self):        ''' 这里固定返回对象自身self '''        return self    def __next__(self):        if self.index <= self.n:            data = self.iterator[self.index]            self.index += 1            return data        else:            raise StopIteration

if __name__ == '__main__':    fib = Fibonacci(5)    for f in fib:        print(f)

生成器

生成器表达式

生成器函数,yield返回表达式对象,不计算值,在大量数据的时候,占用很少内存

生成器实现斐波那契

class Fibonacci(object):

    def __init__(self, n):        self.n = n  # 斐波那契有N项        self.index = 0  # 迭代器遍历时的索引        self.iterator = [0, 1]  # 列表法生成斐波那契数列        for i in range(2, self.n + 1):            self.iterator.append(self.iterator[i - 1] + self.iterator[i - 2])

    def generator(self):        for i in self.iterator:            yield i

if __name__ == '__main__':    fib = Fibonacci(5)    gen = fib.generator()    for g in gen:        print(g)

转载于:https://www.cnblogs.com/zhongyehai/p/10809061.html

测开之路二十二:迭代器、生成器相关推荐

  1. monggodb和mysql混合使用,测开之路五十:monggodb安装与初步使用

    mongodb下载地址:https://www.mongodb.com/download-center Robo3T下载地址:https://robomongo.org/ 安装mongodb 双击无脑 ...

  2. 测开之路五十:monggodb安装与初步使用

    mongodb下载地址:https://www.mongodb.com/download-center Robo3T下载地址:https://robomongo.org/ 安装mongodb 双击无脑 ...

  3. 测开之路四十六:正则表达式

    表达式 所以在上一篇的url匹配的正则代表空 准备数据 data = [ 'https://www.baidu.com/', 'https://www.qq.com/', 'https://i.cnb ...

  4. 一位中科院自动化所博士毕业论文的致谢:二十二载风雨求学路,他把自己活成了光.........

    4月18日,中国科学院官方微博发布消息,披露了这篇论文为<人机交互式机器翻译方法研究与实现>,作者是2017年毕业于中国科学院大学的工学博士黄国平. 这篇论文中情感真挚的<致谢> ...

  5. 国外交友网站开发源码 第十二篇

    最近由于工作生活的事情比较多,所以就没有更新,这篇是国外交友网站开发源码 第十二篇 希望大家能够喜欢. 私信列表 class WechatController extends SiteControll ...

  6. 科学计算机后盖换电池,图吧小白教程 篇二十二:手把手教你给手机换电池(拆机)...

    图吧小白教程 篇二十二:手把手教你给手机换电池(拆机) 2019-11-16 14:06:58 4点赞 18收藏 2评论 创作立场声明:手机换电池省钱可以自己动手从工钱上省,买电池最好还是不要省钱买杂 ...

  7. (原创)无废话C#设计模式之二十二:总结(针对GOF23)

    无废话C#设计模式之二十二:总结(针对GOF23) 比较 设计模式 常用程度 适用层次 引入时机 结构复杂度 Abstract Factory 比较常用 应用级 设计时 比较复杂 Builder 一般 ...

  8. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  9. 读书二十二载,信念很简单,把书念下去,然后走出去,不枉活一世。

    ‍ ‍ 关注+星标公众号,不错过精彩内容 昨天看了一篇关于博士论文的致谢,看的我想哭.改变命运有很多条路,但是对于大多数人而言,读书是改变命运的捷径. 内容是讲述了自己20多年的求学经历:小时候煤油灯 ...

  10. Android项目实战(二十二):启动另一个APP or 重启本APP

    Android项目实战(二十二):启动另一个APP or 重启本APP 原文:Android项目实战(二十二):启动另一个APP or 重启本APP 一.启动另一个APP 目前公司项目需求,一个主AP ...

最新文章

  1. 分页存储管理和分段存储管理
  2. win10系统调用架构分析
  3. 2-SAT适定性(Satisfiability)问题知识点详解
  4. python中exec是什么意思_Python中的进程分支fork和exec详解
  5. Java集合之Vector源码分析
  6. 认识零信任安全网络架构
  7. 还在家隔离呢?没事写写这些程序吧!
  8. echarts中tooltip提示框位置控制
  9. C# 一次性获取二维数组中的一维数组数据
  10. 计算机科学和机器学习中的代数、拓扑、微积分和最优化理论
  11. Python数据分析案例-多因素方差分析
  12. 历史记录具体时间linux,查看命令历史记录及其操作时间
  13. 合并报表编制采用的理论_合并报表的基本逻辑是什么?
  14. 简述no less than和not less than区别
  15. 夜间环境人脸识别_基于人脸识别的夜间疲劳驾驶判断方法与流程
  16. 华为路由交换学习篇-路由
  17. EWAHCompressedBitmap数据结构及原理
  18. matlab 重复测量方差分析,DPABI重复测量方差分析时,在permutation test或后续的多重比较校正时报错...
  19. ios控制中心android版,控制中心iOS13
  20. 表与表之间的关系,修改表,复制表

热门文章

  1. ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
  2. Mysql连接报错:1130-host ... is not allowed to connect to this MySql server
  3. RocketMQ安装使用
  4. Ubuntu 18.04 软件源修改成国内源
  5. 【HDOJ6957】Maximal submatrix(单调栈,最大子矩阵面积)
  6. 【编译器】G++常用命令
  7. 【codevs1576】最长严格上升子序列
  8. UVa673 - Parentheses Balance
  9. php 计算上个月,如何使用PHP计算上一个月的今天
  10. mysql期中考试题及答案_mysql 查询 练习题及答案