python3生成器_Python3 生成器
Python3 生成器
阅读 (125) |
发布于 2020-05-19 14:29:25
在Python中,一边循环一边计算出元素的机制,称为生成器:generator。
生成器的优点:一次返回一个结果,延迟计算。这对于大数据量处理,是个非常有用的优势。占用内存量是工程师必须考虑的一个问题。
提高代码可读性。使用生成器,代码行数更少。
生成器有两种表示形式:生成器函数:外表看上去像是一个函数,但是没有用return语句一次性的返回整个结果对象列表,使用yield语句一次返回一个结果。
生成器推导式:类似列表推导式,将方括号换成了圆括号,返回按需产生的一个结果对象,而不是构建一个结果列表。
1. 生成器函数:
那么究竟什么是生成器呢?下面举个栗子:def test():
print('start') #循环之前的语句只有在第一次调用时会被执行。
for i in range(1,10):
yield I #遇到 yield 关键字暂停,保存当前所有的运行信息,返回yield的值。
j = i+1 #下一次调用,从 yield 下一行开始执行。
print('第', j, "次调用")
a = test() #此时 a 就是一个生成器。可以用来迭代。
print(next(a))
print(next(a))
print(next(a))
################
执行结果如下:
start
1
第 2 次调用
2
第 3 次调用
不过一般大部分时候,我们会使用for循环来迭代它。for i in a:
print(i)
2. 生成器推导式:
用生成器推导式来写刚才的例子,就简单多了。g = (x for x in range(1,10))
我们也来用 for 循环执行一下:for i in g:
print(i)
python3生成器_Python3 生成器相关推荐
- python3生成器_Python3.7之生成器
Python3.7之生成器 一.生成器概念 Python使用生成器对延迟操作提供了支持.所谓延迟操作,是指在需要的时候才产生结果,而不是立即产生结果.主要有两种结构可以延迟结果创建.生成器函数和生成器 ...
- python3 生成器_python3之迭代器和生成器
python3之迭代器和生成器 一.迭代器 一) 迭代 重复多次,可以用 for-in 循环 字符串,元组,列表,字典,range都是可迭代的,但不是迭代器,可用来创建迭代器 二) 迭代器 包含 __ ...
- python3 yield 大文件_详解Python3中yield生成器的用法
任何使用yield的函数都称之为生成器,如: def count(n): while n > 0: yield n #生成值:n n -= 1 另外一种说法:生成器就是一个返回迭代器的函数,与普 ...
- Python3之字典生成器结合lambda实现按key/value排序
Python3之字典生成器结合lambda实现按key/value排序 1.先介绍不常见的字典按value排序: dict1 = {"g": 2, "f": 1 ...
- python3高级 之 生成器
生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据.为 ...
- Python3.x:生成器简介
Python3.x:生成器简介 概念 任何使用yield的函数都称之为生成器:使用yield,可以让函数生成一个序列,该函数返回的对象类型是"generator",通过该对象连续调 ...
- 详解Python3中yield生成器的用法
这篇文章主要介绍了详解Python3中yield生成器的用法,是Python入门学习中的基础知识,需要的朋友可以参考下 任何使用yield的函数都称之为生成器,如: def count(n):whil ...
- python3菜鸟-Python3 迭代器与生成器
如教程所说,迭代器和生成器算是 Python 一大特色,其核心是基于迭代器协议来的. 而平时我们经常使用的 for in 循环体,本质就是迭代器协议的一大应用. 同时 Python 内置的集合类型(字 ...
- python生成器表达式_python 生成器和生成器表达式
1.生成器 生成器的本质就是迭代器 生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(),send():给上一个yield传值) 生成器一般由生成器函数或者生成器表达式来创建 其实就是 ...
最新文章
- 如何进行基因组组装?
- ASP .Net Core系统部署到SUSE 16 Linux Enterprise Server 12 SP2 64 具体方案
- 【STSRM13】绵津见
- 充分发挥bpl包的作用
- LeetCode 802. 找到最终的安全状态(逆向图+拓扑排序)
- python local variable 'xxx' referenced before assignment
- Android FrameWork——StatusBar
- 聊聊python文件
- 一张图超过了屏幕大小 如何自动将多出部分隐藏 只显示中间部分
- Maven中央仓库地址和Nexus 下载地址
- 刷ROM必備的clockworkmod recovery
- python爬虫简历项目怎么写_爬虫项目咋写,爬取什么样的数据可以作为项目写在简历上?...
- Shell判断路径是否存在
- 比尔盖兹退休告别演说:下个数位十年
- Matlab 求全要素生产率,关于使用DEAP2.1计算全要素生产率的问题
- 牛视系统源码。抖音矩阵系统。抖音矩阵系统。
- Python实践11:基于PIL对图片批量去水印
- User Experience Design and Information Architecture
- 硬件系列(1)-电阻、电容、电感三大件
- LODOP.ADD.PRINT_IMAGE()打印图片设置width和height不起作用?
热门文章
- 学科分类号4个空都填什么_高中英语完形填空的5个解题小技巧,大家都在用
- iphone照片删掉又出现_两个月前删的IPhone手机照片还有救?很简单,三招帮你轻松恢复...
- python 跳一跳辅助_使用Python制作微信跳一跳辅助
- 最完整的时间序列分析和预测(含实例及代码)
- 震惊!上手就是快,GitHub18.5K标星,超实用的Python资源
- 再见,Postman...
- PHP大批量正则,php – 正则表达式匹配无限数量的选项
- c++ 获取时间戳_分布式系统理论基础三-时间、时钟和事件顺序
- GAN生成对抗网络-PIX2PIXGAN原理与基本实现-图像翻译09
- mysql5.1 mysiam_MySQL 数据库清理MyISAM Innodb表(支持MySQL5.1.6以上的版本)