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.8 FSM之Moore和Mealy part1
  2. mysql window怎么安装补丁_window下mysql安装步骤
  3. 删除linux 软raid0,配置Linux软RAID0
  4. datatables 添加时间按钮_Java 添加页面跳转按钮到PDF文档
  5. Material使用09 MdCheckboxModule、MdMenuModule、MdTooltipModule
  6. adb.exe可能被其他程序关闭_怎么快速的做自己小程序商城推广?
  7. 详解Android核心模块及相关技术
  8. eclipse解压版_Eclipse配置JavaWeb开发环境
  9. Beginning Python: chapter 1 Instant Hacking The Basics: Modules, cmath, turtle
  10. 用JS写一个电影《黑客帝国》显示屏黑底绿字雨风格的唐诗欣赏器
  11. Java GUI实现图书管理系统
  12. 通达OA11.0 补丁文件
  13. word文档字不靠边_Word打印字体靠右怎么办
  14. 杭电2022 海选女主角
  15. xshell 基本操作
  16. 我是如何在B站自学Java的?
  17. Java job interview:项目开发小组成员网站数据访问层设计
  18. CART回归树原理及示例
  19. Linux下利用ssh远程文件传输 传输命令 scp
  20. mt店铺榜+餐饮分类

热门文章

  1. sqlserver 班级排名_Sqlserver:班级排名问题(转发)
  2. 怎么清理文件缓存文件云服务器,服务器运行内存怎么清理缓存
  3. 开发商微信选房后不退认筹金_网曝!青岛恒大文化旅游城1400余名购房者欲退认筹金,开发商表示.........
  4. input onclick点击button无反应_热图分析:精确洞察用户点击偏好
  5. Java操作HDFS文件系统
  6. 构造函数,对象原型,实例对象三者之间的关系
  7. 用Python分析元旦旅游热门城市,告诉你哪些景点性价比更高
  8. 安利一个我爱不释手的PDF神器网站
  9. GitHub 标星 5w+!Python 新手 100 天学习计划,这次再学不会算我输!
  10. 完整叙述html的语法结构,html article介绍与语法结构