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传值) 生成器一般由生成器函数或者生成器表达式来创建 其实就是 ...
最新文章
- 2.8 FSM之Moore和Mealy part1
- mysql window怎么安装补丁_window下mysql安装步骤
- 删除linux 软raid0,配置Linux软RAID0
- datatables 添加时间按钮_Java 添加页面跳转按钮到PDF文档
- Material使用09 MdCheckboxModule、MdMenuModule、MdTooltipModule
- adb.exe可能被其他程序关闭_怎么快速的做自己小程序商城推广?
- 详解Android核心模块及相关技术
- eclipse解压版_Eclipse配置JavaWeb开发环境
- Beginning Python: chapter 1 Instant Hacking The Basics: Modules, cmath, turtle
- 用JS写一个电影《黑客帝国》显示屏黑底绿字雨风格的唐诗欣赏器
- Java GUI实现图书管理系统
- 通达OA11.0 补丁文件
- word文档字不靠边_Word打印字体靠右怎么办
- 杭电2022 海选女主角
- xshell 基本操作
- 我是如何在B站自学Java的?
- Java job interview:项目开发小组成员网站数据访问层设计
- CART回归树原理及示例
- Linux下利用ssh远程文件传输 传输命令 scp
- mt店铺榜+餐饮分类
热门文章
- sqlserver 班级排名_Sqlserver:班级排名问题(转发)
- 怎么清理文件缓存文件云服务器,服务器运行内存怎么清理缓存
- 开发商微信选房后不退认筹金_网曝!青岛恒大文化旅游城1400余名购房者欲退认筹金,开发商表示.........
- input onclick点击button无反应_热图分析:精确洞察用户点击偏好
- Java操作HDFS文件系统
- 构造函数,对象原型,实例对象三者之间的关系
- 用Python分析元旦旅游热门城市,告诉你哪些景点性价比更高
- 安利一个我爱不释手的PDF神器网站
- GitHub 标星 5w+!Python 新手 100 天学习计划,这次再学不会算我输!
- 完整叙述html的语法结构,html article介绍与语法结构