一、 迭代器

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程序设计之迭代器和生成器示例相关推荐

  1. python中的迭代器,生成器,闭包,装饰器,@property

    一.迭代器 迭代器在Python中无处不在.它们在for循环,理解,生成器等中优雅地实现,但却隐藏在眼皮底下. Python中的Iterator只是一个可以迭代的对象.一个将返回数据的对象,一次返回一 ...

  2. python之路---迭代器和生成器

    阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ...

  3. python之路——迭代器和生成器

    楔子 假如我现在有一个列表l=['a','b','c','d','e'],我想取列表中的内容,有几种方式? 首先,我可以通过索引取值l[0],其次我们是不是还可以用for循环来取值呀? 你有没有仔细思 ...

  4. python之路——迭代器与生成器

    要了解for循环是怎么回事儿,咱们还是要从代码的角度出发. 首先,我们对一个列表进行for循环. for i in [1,2,3,4]: print(i) 上面这段代码肯定是没有问题的,但是我们换一种 ...

  5. python学习-38迭代器和生成器

    迭代器和生成器 ---- 迭代器协议和for循环工作机制 1.迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个Stoplteration异常,以终止迭代(只能往 ...

  6. [转载] Python 学习笔记 迭代器和生成器

    参考链接: Python中的迭代器函数2(islice(),starmap(),tee()..) 本文链接地址 http://quqiuzhu.com/2016/python-iterator-and ...

  7. Python中的迭代器和生成器

    Python中的迭代器是非常实用的,但是迭代器只能应用在类序列对象上,比如列表.元组和字典.除非生成迭代器的类,否则无法在非类序列对象上调用next()方法. 自己可以定义迭代器的类,只要满足: 1. ...

  8. 【Python】Python中的迭代器和生成器

    迭代器和生成器在很多编程语言中都会以不同形式的存在,在实际编程中经常会被用到.下面我们来了解一下什么是迭代. 1 迭代 了解Java的AIAS行者(AI行者是我B站粉丝勋章名称)应该都会知道,在Jav ...

  9. Python面试:迭代器和生成器

    讲讲python的迭代器和生成器 参考:菜鸟教程 如何更好地理解Python迭代器和生成器? 区别:生成器是一种特殊的迭代器,只能迭代一次 迭代器 迭代器是python中的一个强大功能,用于访问集合元 ...

最新文章

  1. 学计算机的要做文档吗,我是如何学习计算机编程的
  2. 华为鸿蒙ai字幕,EMUI11一个值得吹爆的功能?AI字幕,支持翻译英日韩
  3. c++ 获取时间戳_分布式系统理论基础三-时间、时钟和事件顺序
  4. powershell
  5. java之RSA和Base64加密帮助类
  6. 《React 学习之道》The Road to learn React (简体中文版)
  7. 前端学习(2695):重读vue电商网站16之Upload 上传组件
  8. java计时器工作方法,java-摆动计时器如何工作?
  9. Oracle ADG备库SYSAUX数据文件坏块恢复处理(ORA-00600,ORA-10567,ORA-10564......
  10. 【Proteus仿真8086实验一】RAM存储器62256
  11. java 删除文件夹和文件_如何创建无法删除的文件夹?
  12. 计算机 软件 什么是算子
  13. 一个H264流,保存成多个文件需要注意的两个问题
  14. 帝国CMS友情链接系统图文教程
  15. easyUI的时间控件
  16. 微信小程序商城有发展机会吗?
  17. linux init进程源码,Android启动Init进程源码分析
  18. Bip44确定性算法的Java实现库(Android和java平台都可以使用)
  19. 追寻ARM的起源-Acorn电脑简史及FPGA实现
  20. CSS深入理解之relative

热门文章

  1. Ubuntu 下安装 nfs
  2. 【转】MySQL分库分表环境下全局ID生成方案
  3. oracle自动imp脚本
  4. 将SVN的代码推送到码云的步骤
  5. 你需要知道的Xcode Debug功能
  6. 使用git修复线上指定版本的问题
  7. [Curator] Path Cache 的使用与分析
  8. How to tell if UIViewController's view is visible
  9. 在团800运维工作总结之squid做回源图片的二级缓存
  10. hdu 5199 Gunner(STL之map,水)