测开之路二十二:迭代器、生成器
迭代器
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
测开之路二十二:迭代器、生成器相关推荐
- monggodb和mysql混合使用,测开之路五十:monggodb安装与初步使用
mongodb下载地址:https://www.mongodb.com/download-center Robo3T下载地址:https://robomongo.org/ 安装mongodb 双击无脑 ...
- 测开之路五十:monggodb安装与初步使用
mongodb下载地址:https://www.mongodb.com/download-center Robo3T下载地址:https://robomongo.org/ 安装mongodb 双击无脑 ...
- 测开之路四十六:正则表达式
表达式 所以在上一篇的url匹配的正则代表空 准备数据 data = [ 'https://www.baidu.com/', 'https://www.qq.com/', 'https://i.cnb ...
- 一位中科院自动化所博士毕业论文的致谢:二十二载风雨求学路,他把自己活成了光.........
4月18日,中国科学院官方微博发布消息,披露了这篇论文为<人机交互式机器翻译方法研究与实现>,作者是2017年毕业于中国科学院大学的工学博士黄国平. 这篇论文中情感真挚的<致谢> ...
- 国外交友网站开发源码 第十二篇
最近由于工作生活的事情比较多,所以就没有更新,这篇是国外交友网站开发源码 第十二篇 希望大家能够喜欢. 私信列表 class WechatController extends SiteControll ...
- 科学计算机后盖换电池,图吧小白教程 篇二十二:手把手教你给手机换电池(拆机)...
图吧小白教程 篇二十二:手把手教你给手机换电池(拆机) 2019-11-16 14:06:58 4点赞 18收藏 2评论 创作立场声明:手机换电池省钱可以自己动手从工钱上省,买电池最好还是不要省钱买杂 ...
- (原创)无废话C#设计模式之二十二:总结(针对GOF23)
无废话C#设计模式之二十二:总结(针对GOF23) 比较 设计模式 常用程度 适用层次 引入时机 结构复杂度 Abstract Factory 比较常用 应用级 设计时 比较复杂 Builder 一般 ...
- OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十
OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...
- 读书二十二载,信念很简单,把书念下去,然后走出去,不枉活一世。
关注+星标公众号,不错过精彩内容 昨天看了一篇关于博士论文的致谢,看的我想哭.改变命运有很多条路,但是对于大多数人而言,读书是改变命运的捷径. 内容是讲述了自己20多年的求学经历:小时候煤油灯 ...
- Android项目实战(二十二):启动另一个APP or 重启本APP
Android项目实战(二十二):启动另一个APP or 重启本APP 原文:Android项目实战(二十二):启动另一个APP or 重启本APP 一.启动另一个APP 目前公司项目需求,一个主AP ...
最新文章
- 分页存储管理和分段存储管理
- win10系统调用架构分析
- 2-SAT适定性(Satisfiability)问题知识点详解
- python中exec是什么意思_Python中的进程分支fork和exec详解
- Java集合之Vector源码分析
- 认识零信任安全网络架构
- 还在家隔离呢?没事写写这些程序吧!
- echarts中tooltip提示框位置控制
- C# 一次性获取二维数组中的一维数组数据
- 计算机科学和机器学习中的代数、拓扑、微积分和最优化理论
- Python数据分析案例-多因素方差分析
- 历史记录具体时间linux,查看命令历史记录及其操作时间
- 合并报表编制采用的理论_合并报表的基本逻辑是什么?
- 简述no less than和not less than区别
- 夜间环境人脸识别_基于人脸识别的夜间疲劳驾驶判断方法与流程
- 华为路由交换学习篇-路由
- EWAHCompressedBitmap数据结构及原理
- matlab 重复测量方差分析,DPABI重复测量方差分析时,在permutation test或后续的多重比较校正时报错...
- ios控制中心android版,控制中心iOS13
- 表与表之间的关系,修改表,复制表
热门文章
- ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
- Mysql连接报错:1130-host ... is not allowed to connect to this MySql server
- RocketMQ安装使用
- Ubuntu 18.04 软件源修改成国内源
- 【HDOJ6957】Maximal submatrix(单调栈,最大子矩阵面积)
- 【编译器】G++常用命令
- 【codevs1576】最长严格上升子序列
- UVa673 - Parentheses Balance
- php 计算上个月,如何使用PHP计算上一个月的今天
- mysql期中考试题及答案_mysql 查询 练习题及答案