(1):通常的for..in...循环中,in后面是一个数组,这个数组就是一个可迭代对象,类似的还有链表,字符串,文件。他可以是a = [1,2,3],也可以是a = [x*x for x in range(3)]。

它的缺点也很明显,就是所有数据都在内存里面,如果有海量的数据,将会非常耗内存。

(2)生成器是可以迭代的,但是只可以读取它一次。因为用的时候才生成,比如a = (x*x for x in range(3))。!!!!注意这里是小括号而不是方括号。

(3)生成器(generator)能够迭代的关键是他有next()方法,工作原理就是通过重复调用next()方法,直到捕获一个异常。

(4)带有yield的函数不再是一个普通的函数,而是一个生成器generator,可用于迭代

(5)yield是一个类似return 的关键字,迭代一次遇到yield的时候就返回yield后面或者右面的值。而且下一次迭代的时候,从上一次迭代遇到的yield后面的代码开始执行

(6)yield就是return返回的一个值,并且记住这个返回的位置。下一次迭代就从这个位置开始。

(7)带有yield的函数不仅仅是只用于for循环,而且可用于某个函数的参数,只要这个函数的参数也允许迭代参数。

(8)send()和next()的区别就在于send可传递参数给yield表达式,这时候传递的参数就会作为yield表达式的值,而yield的参数是返回给调用者的值,也就是说send可以强行修改上一个yield表达式值。

(9)send()和next()都有返回值,他们的返回值是当前迭代遇到的yield的时候,yield后面表达式的值,其实就是当前迭代yield后面的参数。

(10)第一次调用时候必须先next()或send(),否则会报错,send后之所以为None是因为这时候没有上一个yield,所以也可以认为next()等同于send(None)

python生成器yield_python 生成器yield的总结相关推荐

  1. Python生成器实现及yield关键字

    Python生成器实现及yield关键字 我在另一篇文章中介绍了Python迭代器,https://blog.csdn.net/weixin_43790276/article/details/9034 ...

  2. Python迭代器和生成器详解(包括yield详解)

    文章目录 一.迭代器 1. 可迭代对象(Iterable) 2. 迭代器对象(Iterator) 3. for 循环原理 4. 迭代器的优缺点 二.生成器 1. yield 原理 2. yield 和 ...

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

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

  4. python基础(迭代器,生成器,装饰器)

    python: 生成器: 因为当列表元素达到一定上限,列表会占很大内存空间来存储,所以列表是受到内存限制的来适当使用. 生成器可以按照一个算法,循环推导出元素,就不用一次生成整个列表,而通过生成器(g ...

  5. 简单介绍python迭代器和生成器

    这篇文章主要介绍了Python中的迭代器和生成器,涉及到Python中很多重要的特性,需要的朋友可以参考下,希望能够给你带来帮助 python迭代器和生成器 1.迭代器 这里用字典示例 while T ...

  6. python迭代器和生成器_python中迭代器和生成器。

    前言:很多python教程中,对python的解释不容易理解,本文记录自己的理解和体会,是对迭代器和生成器的初步理解. 迭代器: 迭代器的实质是实现了next()方法的对象,常见的元组.列表.字典都是 ...

  7. python迭代器两个基本方法可供参考_浅析python迭代器和生成器

    可迭代对象 概念 一个对象(在Python里面一切都是对象)只要实现了只要实现了__iter__()方法,那么这个对象就是可迭代对象 常见的可迭代对象 集合或序列类型(如list.tuple.set. ...

  8. Python 进阶_生成器 生成器表达式

    目录 目录 相关知识点 生成器 生成器 fab 的执行过程 生成器和迭代器的区别 生成器的优势 加强的生成器特性 生成器表达式 生成器表达式样例 小结 相关知识点 Python 进阶_迭代器 & ...

  9. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

最新文章

  1. 你正在使用GPU进行CNN类模型训练,突然发生了内存溢出的错误,你可以通过哪些方式来进行解决?
  2. 网页快照是什么?对SEO优化有什么作用?
  3. httpclient 登录人人,并且发表说说。
  4. 警惕:高考将至 著名高校网站被挂马
  5. 写代码还在用abcd命名,等着出大问题被开除吧(变量命名方法)
  6. CentOS 7 安装nginx
  7. Redis 如何实现限流功能?
  8. 不是我吹!超级全面的权限系统设计方案面世了
  9. win7下装ubuntu双系统
  10. Fedora 9 NFS配置
  11. 金蝶K3系统与防火墙集成部署方案
  12. java浅拷贝与深拷贝及拷贝工具推荐
  13. Android开发:基站定位
  14. C#理论 —— 文件操作、委托和事件
  15. mysql密码强度不够怎么解决_安装ISPConfig 遇到的mysql密码强度问题
  16. Linux攻关之基础模块四 命令初识
  17. 华为任正非最新讲话:流程要为多产粮食服务!坚决简化繁琐的管理哲学!(华为LTC/IPD/ITR/ISC)
  18. 某页式虚拟存储器,若某用户空间为16个界面,页面大小为1KB,现有页表如下,逻辑地址0A2CH所对应的物理地址为
  19. 电路(二)电阻电路的等效分析(附二元泰勒公式)
  20. Linux 反引号、单引号、双引号简析

热门文章

  1. Coursera吴恩达《卷积神经网络》课程笔记(4)-- 人脸识别与神经风格迁移
  2. 解决jquery的多次绑定事件
  3. CSS设置图片与文字水平居中对齐
  4. os模块中的shutil的使用方式与方法
  5. List<Map<String, Object>>——多层嵌套的数据结构
  6. python向数据库插入数据时报错%d format: a number is required, not str
  7. 9.png(9位图)在android中作为background使用导致居中属性不起作用的解决方法
  8. ubuntu 64上的GCC如何编译32位程序
  9. Unity3D ShaderLab 菲涅耳内轮廓
  10. android activity dialog 高度,将Activity以Dialog形式显示,并设置宽高度