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

生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数
据的时候使用 yield 语句。每次 next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置
和所有的数据值)

区别:生成器能做到迭代器能做的所有事,而且因为自动创建了 iter()和 next()方法,生成器显得特别简洁,而且
生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当
发生器终结时,还会自动抛出 StopIteration 异常。

转载于:https://www.cnblogs.com/hellohorld/p/9741291.html

生成器、迭代器的区别?相关推荐

  1. [转载] Python中生成器和迭代器的区别

    参考链接: Python迭代器 Python中生成器和迭代器的区别(代码在Python3.5下测试): Num01–>迭代器 定义: 对于list.string.tuple.dict等这些容器对 ...

  2. 详解 Python 生成器与迭代器 及其区别

    前言 不论是初学python还是python进阶,这都是绕不开的知识点,生成器与迭代器的概念相较于其他基础概念显得晦涩难懂,知识点囊括很多方面,查阅越多的资料,头就越大,现在这加以理解归纳总结. 相关 ...

  3. python 生成器 迭代器 区别_Python生成器和迭代器的区别

    What is the difference between iterators and generators? Some examples for when you would use each c ...

  4. python生成器迭代器_python 生成器 迭代器

    阅读目录 一 递归和迭代 二 什么是迭代器协议 三 python中强大的for循环机制 四 为何要有for循环 五 生成器初探 六 生成器函数 七 生成器表达式和列表解析 八 生成器总结 一 递归和迭 ...

  5. Python中的yield关键字及表达式、生成器、生成器迭代器、生成器表达式详解

    文章目录 1. yield关键字及表达式.生成器.生成器迭代器.生成器表达式 1.1 yield关键字及表达式(yield expression) 1.1.1 yield关键字 1.1.2 yield ...

  6. 列表生成式、生成器迭代器

    列表生成式.生成器&迭代器 一.列表生成式(List Comprehensions) 1.案例--列表每个值加1 先有列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把 ...

  7. stream和迭代器的区别

    什么是迭代器? 迭代器,提供一种访问一个集合对象各个元素的途径,同时又不需要暴露该对象的内部细节.java通过提供Iterator和Iterable俩个接口来实现集合类的可迭代性,迭代器主要的用法是: ...

  8. python生成器和迭代器区别_生成器、迭代器的区别?

    迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string.list. dict.tuple 等这类容器对象,使用 for 循环遍历是很方便的. ...

  9. python列表迭代器_python迭代器生成器-迭代器和list区别

    迭代 生成 for循环遍历的原理 for循环遍历的原理就是迭代,in后面必须是可迭代对象 为什么要有迭代器 对于序列类型:字符串.列表.元组,我们可以使用索引的方式迭代取出其包含的元素.但对于字典.集 ...

最新文章

  1. Visual Basic 2005 – 如何播放剪贴簿中的音效数据
  2. R语言lm函数拟合多项式回归模型、删除数据中的异常样本outlier、之后诊断模型( diagnostics)、使用plot函数打印回归模型的QQ图、残差拟合图、标度-位置图、残差与杠杆关系图
  3. jade软件_TEM衍射斑点标定之DM软件
  4. flask manage port_后端Python3+Flask结合Socket.io配合前端Vue2.0实现简单全双工在线客服系统...
  5. HTML中input是啥意思,HTML中input是什么意思
  6. c# 算式 计算器_C#计算器
  7. 【笔记】《Java核心技术卷1(第11版)》-第1章-Java程序设计概述
  8. 华为路由器的静态路由之间的等价路由以及浮动路由
  9. CentOS7安装Zeppelin完整步骤
  10. Origin双Y轴柱状图画法及两柱重合有间居问题解决
  11. cgi进程设置多少 宝塔_【存档】新手宝塔建站详细步骤
  12. A/BTest 基础
  13. 易基因综述:表观遗传学和表观育种在作物品种改良的重要作用(水稻+玉米+番茄+大豆+油菜)
  14. win7怎么进入安全模式_win7进入安全模式教程
  15. 你认为的CISP这个证书是怎么样的
  16. android开发实例之minitwitter登录界面+代码,登录界面_记住密码
  17. okhttp3 Response.body().toString()
  18. Linux系统---Discuz论坛网站创建部署
  19. 控制用计算机论文,计算机在自动控制技术实践中的应用分析
  20. 引入uni-app组件时报错:文件查找失败:‘@/compents/uni-popup.vue‘

热门文章

  1. pytorch实现BiLSTM+CRF用于NER(命名实体识别)
  2. eclipse中导入web项目详细配置
  3. 如何通过HTTP优雅调用第三方-Feign
  4. CPU,GPU,Memory调度
  5. SLAM图优化g2o
  6. CVPR2020 论文解读:少点目标检测
  7. ADAS可行驶区域道路积水反光区域的识别算法
  8. cc.tween 的call()不执行
  9. 微信小程序点击图片切换图片
  10. 对 Jenkins+ANT+Jmeter 接口测试的实践