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期 ...
随机推荐
- bzoj 1283 序列 - 费用流
题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求选出一些数使得原序列中每$m$个连续的数中不超过$K$个被选走.问最大的可能的和. 感觉建图好妙啊.. 考虑把问题转化成选$m$次数,每次 ...
- day09内存管理
复习 ''' 文件处理 1.操作文件的三步骤 -- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续 -- 操作文件:读写操作 -- 释放文件:释放操作系统对硬盘空间的持有 2.基础的读 ...
- 确定有穷自动机(DFA)的化简(最小化)
参考博客地址:https://blog.csdn.net/qq_33605778/article/details/80105658
- Linux 设置系统时间和时区2.Ubuntu
查看当前时间状态 timedatectl status 设置时区 sudo dpkg-reconfigure tzdata Asia shanghai
- Lintcode225-Find Node in Linked List-Naive
225. Find Node in Linked List Find a node with given value in a linked list. Return null if not exis ...
- ios和android 浏览器适配问题总结
转自 https://blog.csdn.net/wcy7916/article/details/83345705
- 微信小程序点击列表添加 去除属性
首先说一下场景:我所循环的数据是对象数组,设置了一个属性当作标记,通过这个标记的值判断是否给改元素添加样式 wxml: <view> <view wx:for="{{lis ...
- 安装PyCharm开发工具
1.进入PyCharm官网 http://www.jetbrains.com/pycharm/ 2.点击现在下载 3.选择windows版本 4.打开安装程序 5.下一步,选择安装路径,安装 6.安装 ...
- sass报 error (Line XX: Invalid GBK character "\xE4") 的解决办法
在webstorm配置的SASS,插入中文注释报错: cmd.exe /D /C call D:\ProgramFiles\Ruby24-x64\bin\sass.bat --no-cache --u ...
- eee
package demo; public class Phone { String phonexinghao; String phonepinpai; public void shouji (){ S ...