1.可迭代对象

具备可迭代的能力,即enumerable,在python中指的是可以通过for-in去逐个访问元素的一些对象,比如元组tuple,列表list,字符串string,文件对象file等。

2.迭代器

通过另一种方式一个一个访问可迭代对象中的元素,enumerator。在python中指的是给内置函数iter()传递一个可迭代对象作为参数,返回的那个对象就是迭代器,通过迭代器的next()方法逐个去访问。

3.生成器

生成器的本质是一个逐个返回元素的函数,本质是个函数。

最大的好处在于它是“延迟加载”,即对于处理长序列问题,更加的节省存储空间。即生成器每次在内存中只存储一个值,比如打印一个斐波拉切数列:原始的方法可以如下所示

def fab(max): n, a, b = 0, 0, 1 L = [] while n < max: L.append(b) a, b = b, a + b n = n + 1 return L这样做最大的问题在于将所有的元素都存储在了L里面,很占用内存,而使用生成器则如下所示def fab(max):n, a, b = 0, 0, 1while n < max:yield b                 #每次迭代时值加载这一个元素,而且替换掉之前的那一个元素,这样就大大节省了内存。而且程序在遇见yield语句时会停下来,这是后面使用yield阻断原理进行多线程编程的一个启发,(python协程编程会在后面讲到)a, b = b, a + bn = n + 1生成器其实就是下面这个样子,写得简单一些就是一次返回一条,如下:def generator():for i in range(5):yield idef generator_1():yield 1yield 2yield 3yield 4yield 5

4. yield from

yield from  generator 。实际上就是返回另外一个生成器

def generator1():item = range(10)for i in item:yield idef generator2():yield ‘a‘yield ‘b‘yield ‘c‘yield from generator1() #yield from iterable本质上等于 for item in iterable: yield item的缩写版yield from [11,22,33,44]yield from (12,23,34)yield from range(3)for i in generator2() :print(i)

从上面的代码可以看书,yield from 后面可以跟的式子有“ 生成器  元组 列表等可迭代对象以及range()函数产生的序列”

上面代码运行的结果为:

a
b
c
0
1
2
3
4
5
6
7
8
9
11
22
33
44
12
23
34
0
1
2

原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/9248641.html

转载于:https://www.cnblogs.com/baxianhua/p/10150430.html

python yield yield from相关推荐

  1. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  2. [翻译]Python中yield的解释

    问题: Python中yield关键字的作用是什么?它做了什么? 例如,我想理解以下代码 def node._get_child_candidates(self, distance, min_dist ...

  3. python中yield的认识与学习|生成器

    接触python,yield就有点难度啦.都知道包含这个yield的函数就不是普通函数啦.就是一个生成器函数. 类型:<generator object test1 at 0x01D89220& ...

  4. js date 当前日志往后一个月_【应用实例】如何利用 Python 生成器 yield 监控日志?...

    Python 生成器 yield 是编写基于处理管道,流或数据流程序的一种极其强大的方式,在<Python参考手册>中有一则实例非常简单实用,略加修改,分享一下给大家.如果你对生成器yie ...

  5. Python中yield简单用法

    Python中yield简单用法 你或许知道带有yield的函数在Python中被称之为generator,那何为 generator? 我们暂时抛开generator,先从一个常见编程题目开始,循序 ...

  6. python 中 yield 的使用

    python中yield在函数中的使用 正是因为函数含有这个yield,所以,该函数不再是普通的函数,而是生成器函数(generator function).下面通过小例子来说明一下这个内置函数的特性 ...

  7. python之yield

    原创博客链接:python之yield yield关键字之前见过,也能读懂,但开发时也不大敢使用,感觉理解还是不够充分.刚好项目代码中有涉及,顺便再学习学习. 在理解yield之前, 可迭代,迭代器, ...

  8. [Python] 关键字 yield 用法详解

    一个十分十分优秀的博客: python中yield的用法详解--最简单,最清晰的解释.

  9. python的yield是什么意思,python生成器是怎么使用的 python中yield是什么意思

    python中return和yield怎么用的?两个有什么区别?你从未驯服过她,她只是在爱你的时候收起獠牙. yield yield是用于生成器.什么是生成器,你可以通俗的认为,在一个函数中,使用了y ...

  10. python中yield的用法(生成器的讲解)

    2 理解说明yield与生成器 在Python中,使用yield的函数被称为生成器函数(generator function). 生成器有两种方法:next()和send(),都可以调用生成器 yie ...

最新文章

  1. 深入掌握JMS(一):JMS基础
  2. Closer--Never Take it for granted
  3. 《Asp.Net 2.0 揭秘》读书笔记(八)
  4. Linux解压有思路
  5. Jackson 注解 -- 使用 Map存储JSON
  6. 初识Nginx服务器
  7. NGUI中UILabel使用url标签的一个bug
  8. TAFE的完整形式是什么?
  9. 呆萌的图模型学习——使用networkx计算node2vec,得到节点与边的embedding(三)
  10. 中文计算机语言编程优势,十种编程语言特点比较
  11. 基于Html5的移动端APP开发框架
  12. python 官方 中文 文档
  13. easyexcel 无模板写入_EasyExcel模板填充踩坑
  14. RSA2048 public key der格式结构
  15. VINS-Mono关键知识点总结——边缘化marginalization理论和代码详解
  16. Js Switch语句
  17. python 滚动字幕_python – 在PyQt中滚动文本?
  18. 父传子 子传父以及兄弟之间传值
  19. 送给大一新生的一些话
  20. Typora使用总结

热门文章

  1. 真赞!IDEA中这么玩MyBatis,让编码速度飞起!
  2. MAT入门到精通(二)
  3. Spring Cloud第八篇:Spring Cloud Bus刷新配置
  4. ECUG 全球技术大会重回上海!
  5. 10个必知必会的PyCharm使用技巧!
  6. 05后都上清华了!首批丘成桐数学领军人才名单发布,三位菲尔兹奖得主为其授课,周末就来学校报到...
  7. 图机器学习有多大神力?
  8. 结构最清晰的Yolov3 head和loss实现完全解析
  9. 又一位!26岁当上985博导,读博期间也曾两次想要退学......
  10. 计算机界最大“追书坑”,82岁大神高德纳仍在写《计算机程序设计艺术》4B卷...