Python程序设计之迭代器和生成器示例
一、 迭代器
Python中只要实现了__iter__和__next__方法的对象都可以称之为迭代器,迭代器是一个带状态的对象,可以记录迭代的位置。
#!/usr/bin/env python3class Iterator:def __iter__(self):self.counter = 0self.a = 0self.b = 1return selfdef __next__(self):if self.counter < 20:tmp = self.aself.counter = self.counter + 1self.a, self.b = self.b, self.a+self.breturn tmpelse:raise StopIterationiterclass = Iterator()
it = iter(iterclass)for d in it:print(d, end=" ")
print()
输入结果:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
二、 生成器
Python中的生成器是一种特殊的迭代器,因为生成器生成的是一个迭代器对象,而这个迭代器中只有一个值,也就是说生成器生成的这个迭代器只可以迭代一次。例如我们对一个函数使用yield关键字进行值得返回,就可以实现Python简单的生成器。
#!/usr/bin/env python3def fib(n):a, b, counter = 0, 1, 0while True:if counter > n:returnyield aa, b = b, a+bcounter = counter + 1f = fib(20)while True:try:print(next(f), end=" ")except StopIteration:break
print()
输入结果:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Python程序设计之迭代器和生成器示例相关推荐
- python中的迭代器,生成器,闭包,装饰器,@property
一.迭代器 迭代器在Python中无处不在.它们在for循环,理解,生成器等中优雅地实现,但却隐藏在眼皮底下. Python中的Iterator只是一个可以迭代的对象.一个将返回数据的对象,一次返回一 ...
- python之路---迭代器和生成器
阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ...
- python之路——迭代器和生成器
楔子 假如我现在有一个列表l=['a','b','c','d','e'],我想取列表中的内容,有几种方式? 首先,我可以通过索引取值l[0],其次我们是不是还可以用for循环来取值呀? 你有没有仔细思 ...
- python之路——迭代器与生成器
要了解for循环是怎么回事儿,咱们还是要从代码的角度出发. 首先,我们对一个列表进行for循环. for i in [1,2,3,4]: print(i) 上面这段代码肯定是没有问题的,但是我们换一种 ...
- python学习-38迭代器和生成器
迭代器和生成器 ---- 迭代器协议和for循环工作机制 1.迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个Stoplteration异常,以终止迭代(只能往 ...
- [转载] Python 学习笔记 迭代器和生成器
参考链接: Python中的迭代器函数2(islice(),starmap(),tee()..) 本文链接地址 http://quqiuzhu.com/2016/python-iterator-and ...
- Python中的迭代器和生成器
Python中的迭代器是非常实用的,但是迭代器只能应用在类序列对象上,比如列表.元组和字典.除非生成迭代器的类,否则无法在非类序列对象上调用next()方法. 自己可以定义迭代器的类,只要满足: 1. ...
- 【Python】Python中的迭代器和生成器
迭代器和生成器在很多编程语言中都会以不同形式的存在,在实际编程中经常会被用到.下面我们来了解一下什么是迭代. 1 迭代 了解Java的AIAS行者(AI行者是我B站粉丝勋章名称)应该都会知道,在Jav ...
- Python面试:迭代器和生成器
讲讲python的迭代器和生成器 参考:菜鸟教程 如何更好地理解Python迭代器和生成器? 区别:生成器是一种特殊的迭代器,只能迭代一次 迭代器 迭代器是python中的一个强大功能,用于访问集合元 ...
最新文章
- 学计算机的要做文档吗,我是如何学习计算机编程的
- 华为鸿蒙ai字幕,EMUI11一个值得吹爆的功能?AI字幕,支持翻译英日韩
- c++ 获取时间戳_分布式系统理论基础三-时间、时钟和事件顺序
- powershell
- java之RSA和Base64加密帮助类
- 《React 学习之道》The Road to learn React (简体中文版)
- 前端学习(2695):重读vue电商网站16之Upload 上传组件
- java计时器工作方法,java-摆动计时器如何工作?
- Oracle ADG备库SYSAUX数据文件坏块恢复处理(ORA-00600,ORA-10567,ORA-10564......
- 【Proteus仿真8086实验一】RAM存储器62256
- java 删除文件夹和文件_如何创建无法删除的文件夹?
- 计算机 软件 什么是算子
- 一个H264流,保存成多个文件需要注意的两个问题
- 帝国CMS友情链接系统图文教程
- easyUI的时间控件
- 微信小程序商城有发展机会吗?
- linux init进程源码,Android启动Init进程源码分析
- Bip44确定性算法的Java实现库(Android和java平台都可以使用)
- 追寻ARM的起源-Acorn电脑简史及FPGA实现
- CSS深入理解之relative