DAY12-----生成器
一丶生成器
生成器:本质是迭代器,写法和迭代器不一样.用法和迭代器一样
print("__iter__"in dir(gen))
生成器函数:函数中带有yield,执行生成器函数的时候返回生成器,而不是执行这个函数
def func
print("你好啊,我叫赛利亚")
yield"西岚的武士刀" #retunrn和yield都可以返回数据
ret=func() #ret是一个生成器
print(ret)
s=__next__() #当执行到__next__()的时候,函数菜真正开始执行
print("接收的是",s)
特点:
1.节省内存,几乎不占内存
2.惰性机制
3.只能往前走
send()也可以实现类似__next__()的效果,send()可以给上一个yild传值
def func()
print("韭菜盒子")
a=yield"哇哈哈"
print("肉包子"a)
b=yield"脉动"
print("锅包肉",b)
yield"冰红茶"
gen=func
ret=gen.__next__()
print(ret)
ret=gen.send("刘德华") #给上一个yield传值
print(ret)
send和__next__()的区别
1.send不可以开头
2.send可以给上一个yield传值,不能给最后一个yield传值
3.生成器本质是迭代器.print("__iter__"in dir(gen))
4.生成器可以直接用for
lst=list(gen)#把生成器中的每一个数据拿出来组合成一个列表
print(lst)
二丶推导器
列表:[结果 for循环 if筛选]
获取1-100内能被3整除的数lst = [i for i in range(1, 101) if i % 3 == 0] # 100以内能被3整除的数的平⽅lst = [i*i for i in range(1, 101) if i % 3 == 0]寻找名字中带有两个e的⼈的名字 names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven','Joe'], ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']] lst = [name for first in names for name in first if name.count("e") >= 2 ]print(lst)
字典:{key:value for循环 if 筛选}
lst1 = ["东北", "陕西", "山西", "开封", "杭州", "广东", "济南"]lst2 = ['大拉皮', "油泼面", "老陈醋", "灌汤包", "西湖鲤鱼", "早茶", "胶东一锅鲜"] dic = {lst1[i]:lst2[i] for i in range(len(lst1))}print(dic)
集合推导器 无需不重复 可哈希
{key for if}
元祖没有推导式
三丶生成器表达式
生成器表达式:记录一下代码.然后每次需要的时候去生成器中执行这个代码
列表推导式:一次性把所有的数据创建出来,容易产生内存浪费
特性
1.节省内存
2.惰性机制
3.只能向前
生成器函数def func(): print(111) yield 222 g = func() # 生成器 g1 = (i for i in g) # 生成器g2 = (i for i in g1) # 生成器 print(list(g1)) # 222print(list(g2))print(list(g)) # 才会开始真正的取数据
转载于:https://www.cnblogs.com/lilei1996/p/9669304.html
DAY12-----生成器相关推荐
- Python学习day12(生成器,列表/生成器推导式)
Python学习day12(生成器,列表/生成器推导式) 生成器 初始生成器 我们知道的迭代器有两种:一种是调用方法直接返回的,一种是可迭代对象通过执行iter方法得到的,迭代器有的好处是可以节省内存 ...
- DAY12 生成器初始与列表生成式
初识生成器 通过前面学习的迭代器,我们知道,迭代器十分节省内存.如果在某些情况下,我们也需要节省内存,就只能自己写,我们自己用python代码实现的迭代器就称为生成器. 生成器:生成器就是自己用pyt ...
- day12 生成器和各种推导式
今天主要学习了 1.生成器 2.生成器函数 3.各种推导式(比较诡异,理解了很简单,不理解很难) 4.生成器表达式(重点) 一.生成器 def func():print'我叫周润发'return '林 ...
- 初识生成器与生成器表达式 Day12
一.生成器 1,生成器基本概念 生成器的实质是迭代器 迭代器:Iterator 内部同时包含了__iter__()和__next__()函数 可迭代对象:Iterable 内部包含__iter__() ...
- day11 - 15(装饰器、生成器、迭代器、内置函数、推导式)
day11:装饰器(装饰器形成.装饰器作用.@语法糖.原则.固定模式) 装饰器形成:最简单的.有返回值的.有一个参数的.万能参数 函数起的作用:装饰器用于在已经完成的函数前后增加功能 语法糖:使代码变 ...
- day12 装饰器进阶
day12 装饰器进阶 #装饰器进阶 #functools.wraps #带参数的装饰器 #多个装饰器装饰用一个函数 def outer(*args,**kwargs):#接收的时候是聚合(成元祖的形 ...
- day12—迭代器生成和模块笔记
day12-迭代器生成和模块 一.变量作用域 1.变量作用域--变量可使用的范围 根据变量作用域的不同可将变量分为:全局变量,局部变量 1.全局变量 没有定义在函数或者类中的变量都是全局变量,全局变量 ...
- Python 生成器总结
通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含 100 万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数 ...
- 完全理解Python迭代对象、迭代器、生成器
本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...
- python特性(八):生成器对象的send方法
生成器对象是一个迭代器.但是它比迭代器对象多了一些方法,它们包括send方法,throw方法和close方法.这些方法,主要是用于外部与生成器对象的交互.本文先介绍send方法. send方法有一个参 ...
最新文章
- scala入门之识别函数式风格
- cp: omitting directory”错误
- 正则表达式(grep命令,egrep命令,sed命令,awk命令,sort工具,uniq工具)
- Win11任务栏空白怎么办 Win11任务栏空白解决办法
- BZOJ3597 [Scoi2014]方伯伯运椰子 【二分 + 判负环】
- 《每周一点canvas动画》——圆周运动
- MySQL(17)--- LIKE 子句
- c# webform ajax操作,C#-WebForm-AJAX阿贾克斯(一)基本格式
- Flask redirect
- Python实战从入门到精通第三讲——数据结构与算法1之解压序列赋值
- Unity Android 打开相册和摄像头
- Tricks(三十七)—— C++ string类 split 的实现
- mysql在文件里修改用户_mysql用户密码修改,用户添加、删除、设置权限及源文件恢复数据库...
- hdu2084数塔----DP入门
- 【图像加密】基于matlab仿射变换数字图象置乱【含Matlab源码 1171期】
- ivx中字体显示_Windows 7 中的 SimSun-ExtB 是什么字体,为何与中易宋体 SimSun 显示出来不一样?...
- 基于java的化妆品购物商城微信小程序的设计与实现 毕业设计毕设参考
- 带通滤波器中心频率计算公式中R是哪个值_手把手教系列之IIR数字滤波器设计实现...
- 用python爬虫写一个属于自己的彩虹屁生成器!
- 安卓java 模拟直装_安卓2.3java模拟器下载