python yield yield from
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python yield yield from,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1800字,纯文字阅读大概需要3分钟。
内容图文
![python yield yield from](/upload/InfoBanner/zyjiaocheng/845/6ccfc887c92648979e0f2bbe53c44162.jpg)
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, 1 while n < max: yield b #每次迭代时值加载这一个元素,而且替换掉之前的那一个元素,这样就大大节省了内存。而且程序在遇见yield语句时会停下来,这是后面使用yield阻断原理进行多线程编程的一个启发,(python协程编程会在后面讲到) a, b = b, a + b n = n + 1 生成器其实就是下面这个样子,写得简单一些就是一次返回一条,如下: def generator(): for i in range(5): yield i def generator_1(): yield 1 yield 2 yield 3 yield 4 yield 5
4. yield from
yield from generator 。实际上就是返回另外一个生成器
def generator1(): item = range(10) for i in item: yield i def 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
内容总结
以上是互联网集市为您收集整理的python yield yield from全部内容,希望文章能够帮你解决python yield yield from所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。