Python_Mix*生成器,生成器函数,推导式,生成器表达式
- 生成器:
- 生成器的本质就是迭代器
- 生成器一般由生成器函数或者生成器表达式来创建,其实就是手写的迭代器
def func():
print('abc')
yield 222 #由于函数中有了yield ret = func()
print(ret) #我们执行函数的时候实际上是获取生成器 结果:
<generator object func at 0x10567ff68>
这个叫func的生成器的内存地址0x10567ff68- 在Python中可以通过三种方式来获取生成器:
- 1.通过生成器函数
- 2.通过各种推导式来实现生成器
- 3.通过数据的转换也可以获取生成器
- yield:
- 将函数中的return换成yield就是生成器,由于函数中存在了yield,我们再执行这个函数的时候就不再是函数的执行了,而是获取这个生成器.
- return和yield的区别:
- yield是分段来执行一个函数,return是直接停止执行函数.
- 特点:
- 生成器的特点和迭代器一样,取值方式和迭代器一样(__next__( ),send( ):给上一个yield传值)
- 在Python中可以通过三种方式来获取生成器:
- 生成器函数:
- 和普通函数没有区别,里面有yield的函数就是生成器函数
- 生成器函数在执行的时候,默认不会执行函数体,返回生成器
- 通过生成器的__next__( )分段执行这个函数
- send( )给上一个yield传值,不能在开头(因为没有上一个yiel),最后一个yield也不可以用send(因为没有下一个yield)
def eat():
print('吃什么呢')
a = yield '馒头'
print('a=',a)
b = yield '面条'
print('b=',b)
c = yield '水果'
print('c=',c)
yield '安排一下!'
eats = eat() #获取生成器
ret1 = eats.__next__()
print(ret1)
ret2 = eats.send('胡辣汤')
print(ret2)
ret3 = eats.send('冰激凌')
print(ret3)
ret4 = eats.send('蛋挞')
print(ret4)- 推导式:
- 1)列表推导式[结果 for循环 条件筛选]
- 2)字典推导式{结果 for循环 条件筛选}
- 3)集合推导式{key for循环 条件}
- 生成器表达式
- (结果 for循环 条件)
- 特点:
- 1.惰性机制
- 2.只能向前
- 3.节省内存
Python_Mix*生成器,生成器函数,推导式,生成器表达式的更多相关文章
- python 生成器函数.推导式.生成器表达式
一.生成器 什么是生成器,生成器的实质就是迭代器 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也可以获取生成器 1 def func ...
- Day12--Python--生成器,生成器函数,推导式,生成器表达式
一.昨日内容回顾 惰性机制(只有执行__next__()才会取值)二.今日主要内容 1.生成器 生成器:本质是迭代器,写法和迭代器不一样.用法和迭代器一样. ※生成器记录的是代码 2.生成器函数 生成 ...
- day13 python生成器函数 推导式 生成器
day13 python 一.生成器 生成器的本质就是迭代器 生成器的特点和迭代器一样. 取值方式和迭代器一样(__next__()) 由生成器函数或生成器表达式来创建 ...
- python之生成器(~函数,列表推导式,生成器表达式)
一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...
- Python进阶(四)----生成器、列表推导式、生成器推导式、匿名函数和内置函数
Python进阶(四)----生成器.列表推导式.生成器推导式.匿名函数和内置函数 一丶生成器 本质: 就是迭代器 生成器产生的方式: 1.生成器函数
- python全栈开发day13-迭代器、生成器、列表推导式等
昨日内容:函数的有用信息.带参数的装饰器.多个装饰器修饰一个函数 迭代器 可迭代对象:内部含有__iter__方法 迭代器 定义:可迭代对象.__iter__()就是迭代器,含有__iter__且__ ...
- python基础(14):生成器、列表推导式
1. 生成器 什么是⽣成器?⽣成器实质就是迭代器. 在python中有三种⽅式来获取⽣成器: 1. 通过⽣成器函数 2. 通过各种推导式来实现⽣成器 3. 通过数据的转换也可以获取⽣成器 ⾸先,我们先 ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)
一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...
随机推荐
- Flutter 输入控件TextField设置内容并保持光标(cursor)在末尾
TextField( controller: TextEditingController.fromValue(TextEditingValue( // 设置内容 text: inputText, // ...
- CH 6201 走廊泼水节题解
题目链接:CH6201 当时在海亮考试的第一题: 心得:其实一个算法是要真正理解这个思路和过程,而并不是单单知道它是用来写什么题的: 思路:n个节点有n-1条边,把这n-1条边按照权值从小到大排序,有 ...
- 2018年-2019年第二学期第二周C#学习个人总结
在本学期的第二周,我们又开始了C#的学习.在星期一的C#课上时,我们学了this关键字的用法其中包括1.this访问属性2.this访问成员方法3.this访问构造方法.在this访问属性中通过thi ...
- ORACLE数据库找回用户密码
安装完oracle数据库后,登录时sys,system,scott这几个用户密码输入后都不对,查阅资料后解决 1,cmd下输入sqlplus,之后让你输入用户名,输入这个 "/as sysd ...
- JS宽高理解
1.clentWidth和clientHeight ①加入无padding.无滚动条显示占据位置 clientWidth=style.width ②假如有padding.无滚动 clientWidth ...
- 浏览器解析JavaScript的原理
JavaScript的特点一般都知道的就是解释执行,逐行执行,就是从上到下依次执行. JavaScript的执行之前,其实还是有一些操作的,只是没有表现出来 JavaScript的执行过程: 1.语法 ...
- Git学习笔记——分支
分支用法很多,比如bug修复,协作管理,这里只简单介绍我在工作中用到的协作模式. 场景:我自己开发独立功能,在本地为自己创建一个分支就叫localbranch吧,甭管master到哪了,我只管开发我的 ...
- server.Transfer不工作
https://www.codeproject.com/Questions/56736/How-to-use-Server-Transfer-from-Ajax-UpdatePanel For Ser ...
- Mac下文件的编码及修改编码
brew install enca # Enca语法 Usage: enca [-L LANGUAGE] [OPTION]... [FILE]... enconv [-L LANGUAGE] [OPT ...
- 使用ffmpeg进行视频封面截取
项目需求:用户上传视频格式的文件,需要转为指定编码的MP4格式(为了适应在线播放),并且截取视频的第一帧作为封面图片(用于展示) 实现: 1.下载ffmpeg.exe 地址:http://ffmpeg ...