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 生成器相关推荐

  1. python3生成器_Python3.7之生成器

    Python3.7之生成器 一.生成器概念 Python使用生成器对延迟操作提供了支持.所谓延迟操作,是指在需要的时候才产生结果,而不是立即产生结果.主要有两种结构可以延迟结果创建.生成器函数和生成器 ...

  2. python3 生成器_python3之迭代器和生成器

    python3之迭代器和生成器 一.迭代器 一) 迭代 重复多次,可以用 for-in 循环 字符串,元组,列表,字典,range都是可迭代的,但不是迭代器,可用来创建迭代器 二) 迭代器 包含 __ ...

  3. python3 yield 大文件_详解Python3中yield生成器的用法

    任何使用yield的函数都称之为生成器,如: def count(n): while n > 0: yield n #生成值:n n -= 1 另外一种说法:生成器就是一个返回迭代器的函数,与普 ...

  4. Python3之字典生成器结合lambda实现按key/value排序

    Python3之字典生成器结合lambda实现按key/value排序 1.先介绍不常见的字典按value排序: dict1 = {"g": 2, "f": 1 ...

  5. python3高级 之 生成器

    生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据.为 ...

  6. Python3.x:生成器简介

    Python3.x:生成器简介 概念 任何使用yield的函数都称之为生成器:使用yield,可以让函数生成一个序列,该函数返回的对象类型是"generator",通过该对象连续调 ...

  7. 详解Python3中yield生成器的用法

    这篇文章主要介绍了详解Python3中yield生成器的用法,是Python入门学习中的基础知识,需要的朋友可以参考下 任何使用yield的函数都称之为生成器,如: def count(n):whil ...

  8. python3菜鸟-Python3 迭代器与生成器

    如教程所说,迭代器和生成器算是 Python 一大特色,其核心是基于迭代器协议来的. 而平时我们经常使用的 for in 循环体,本质就是迭代器协议的一大应用. 同时 Python 内置的集合类型(字 ...

  9. python生成器表达式_python 生成器和生成器表达式

    1.生成器 生成器的本质就是迭代器 生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(),send():给上一个yield传值) 生成器一般由生成器函数或者生成器表达式来创建 其实就是 ...

最新文章

  1. 如何进行基因组组装?
  2. ASP .Net Core系统部署到SUSE 16 Linux Enterprise Server 12 SP2 64 具体方案
  3. 【STSRM13】绵津见
  4. 充分发挥bpl包的作用
  5. LeetCode 802. 找到最终的安全状态(逆向图+拓扑排序)
  6. python local variable 'xxx' referenced before assignment
  7. Android FrameWork——StatusBar
  8. 聊聊python文件
  9. 一张图超过了屏幕大小 如何自动将多出部分隐藏 只显示中间部分
  10. Maven中央仓库地址和Nexus 下载地址
  11. 刷ROM必備的clockworkmod recovery
  12. python爬虫简历项目怎么写_爬虫项目咋写,爬取什么样的数据可以作为项目写在简历上?...
  13. Shell判断路径是否存在
  14. 比尔盖兹退休告别演说:下个数位十年
  15. Matlab 求全要素生产率,关于使用DEAP2.1计算全要素生产率的问题
  16. 牛视系统源码。抖音矩阵系统。抖音矩阵系统。
  17. Python实践11:基于PIL对图片批量去水印
  18. User Experience Design and Information Architecture
  19. 硬件系列(1)-电阻、电容、电感三大件
  20. LODOP.ADD.PRINT_IMAGE()打印图片设置width和height不起作用?

热门文章

  1. 学科分类号4个空都填什么_高中英语完形填空的5个解题小技巧,大家都在用
  2. iphone照片删掉又出现_两个月前删的IPhone手机照片还有救?很简单,三招帮你轻松恢复...
  3. python 跳一跳辅助_使用Python制作微信跳一跳辅助
  4. 最完整的时间序列分析和预测(含实例及代码)
  5. 震惊!上手就是快,GitHub18.5K标星,超实用的Python资源
  6. 再见,Postman...
  7. PHP大批量正则,php – 正则表达式匹配无限数量的选项
  8. c++ 获取时间戳_分布式系统理论基础三-时间、时钟和事件顺序
  9. GAN生成对抗网络-PIX2PIXGAN原理与基本实现-图像翻译09
  10. mysql5.1 mysiam_MySQL 数据库清理MyISAM Innodb表(支持MySQL5.1.6以上的版本)