无论你是Python初学者还是爱好者,相信大家都听说过迭代器与生成器,但是很多同学搞不懂Python迭代器与生成器到底是什么?它们之间又有什么样的关系呢?接下来,小编通过这篇文章为大家介绍一下。

  什么是迭代器?

  迭代是Python最强大的功能之一,是访问集合元素的一种方式。

  迭代器是一个可以记住遍历的位置的对象。

  迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能往前不会后退。

  迭代器有两个基本的方法:iter()和next()。

  什么是生成器?

  在Python中,使用了yield的函数被称为生成器。

  跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

  在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时从当前位置继续运行。

  调用一个生成器函数,返回的是一个迭代器对象。

  迭代器与生成器之间有什么区别?

  迭代器是一个更抽象的概念,任何对象,如果它的类有NEXTiter方法返回自己本身,对于string、list、dict、tuple 等这类容器对象,使用for循环遍历是很方便的。在后台For语言对容器对象条用iter()函数,iter()是Python的内置函数。iter()会返回一个定义了next()方法迭代器对象,在容器中逐个访问容器的元素,next()也是Python的内置函数,next()会抛出StopIteration异常。

  生成器是创新迭代器的简单而强大的工具,它们写起来就好像正则函数,只是在需要返回数据的时候使用yield 语句。

  迭代器协议,对象需要提供next()方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,终止迭代。

  可迭代对象,实现了迭代器协议对象。list、tuple、dict都是Iterable可迭代的对象,但不是Iterator迭代器对象。


©著作权归作者所有:来自51CTO博客作者mb5fd1925b5d585的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 报表生成器FastReport .Net如何使用FastReport.Service.dll?
  2. Java并发编程学习3-可见性和对象发布
  3. 最新iOS开发常见面试题总结二!(附答案)!
  4. Java 如何有效地避免OOM:善于利用软引用和弱引用
  5. JVM内存分配与回收
  6. 两个不同的Integer对象竟然相等
  7. unity常用方法库 持续跟新
  8. JVM内存管理机制
  9. JavaScript面向对象编程理解

随机推荐

  1. Android中判断网络连接的工具类
  2. android获取应用基本信息
  3. Manage Android source code like source
  4. Android下获取设备唯一标识(UDID, Device
  5. Android 面试题之基础(不断更新)
  6. Android碰到的问题之一
  7. 隐藏的数字咪咪
  8. android 抖动原理
  9. android利用Handler开启线程和关闭线程
  10. Android(安卓)定制RadioButton样式