Python9- 生成器函数进阶-day14
生成器进阶#send的获取下一个值的效果和next基本一致,
#只不过在获取下一个值的时候,给上一个值的位置穿第一个数据
使用send的注册事项:
#第一次使用生成器的时候,必须用next获取下一个值
#最后一个yield不能接受外部的值
def generator():
print(123)
content = yield 1
print('======',content)
print(456)
yield 2 g = generator()
ret = g.__next__()
print('***',ret)
ret = g.send('hello') #send的效果和next一样
print('@@@',ret) 123
*** 1
====== hello
456
@@@ 2
生成器进阶实例
def average():
sum = 0
count = 0
avg = 0
while True:
num = yield avg #
sum +=num #
count +=1 #
avg = sum/count avg_g = average()
avg_g.__next__()
avg1 = avg_g.send(10)
print(avg1)
avg2 = avg_g.send(20)
print(avg2)


#yield from 从一个容器取出并且一个一个接收到
def generator():
a = 'abcde'
b = ''
yield from a #===for i in a: yield i
yield from b #===for i in b: yield i
g = generator()
for i in g:
print(i) a
b
c
d
e
1
2
3
4
5
# send
# send的作用范围和next一模一样
# 第一次不能用send
# 函数中的最后一个yield不能接受新的值
# 计算移动平均值的例子
# 预激生成器的装饰器的例子
# yield from
#生成器表达式和列表推导式
egg_list=['鸡蛋%s'%i for i in range(10)] #列表推导式
print(egg_list)
print([i*2 for i in range(10)])
#生成器表达式
g = (i for i in range(10))
print(g)
for i in g:
print(i)
#括号不一样
#返回值不一样=====几乎不占用内存
各种推导式
# [每一个元素或者是和元素相关的操作 for 元素 in 可迭代数据类型]
# [满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件]
#30以内所有能被3整除的数
ret = [i for i in range(30) if i%3==0]
print(ret)
#30以内所有能被3整除的数的平方
ret = [i*i for i in range(30) if i%3==0]
print(ret)
#找到嵌套列表中名字含有2个e的所有名字
names = [['tim','tom','cc','andreeew'],['alice','eeenn']]
ret = [name for lst in names for name in lst if name.count('e')>=2]
print(ret)
#字典推导式
# mcase = {'a':10,'b':34}
# # 将一个字典的key和value对调
# mcase = {'a':10,'b':34}
# mcase_frequency = {mcase[k]:k for k in mcase}
# print(mcase_frequency)
# 合并大小写对应的value,将k统一成小写
# mcase = {'a':10,'b':34,'A':7,'Z':3}
# mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys()}
# print(mcase_frequency)
#集合推导式
#例:计算列表中每个值的平方,自带去重功能
squared = {x**2 for x in [1, -1, 2]}
print(squared)
# Output: set([1, 4])
Python9- 生成器函数进阶-day14的更多相关文章
- 2018.11.06 生成器函数进阶&列表推导式&生成器表达式
1.生成器函数进阶 2.列表推导式 3.生成器表达式
- Python进阶-VI 生成器函数进阶、生成器表达式、推导式
一.生成器函数进阶 需求:求取移动平均数 1.应用场景之一,在奥运会气枪射击比赛中,每打完一发都会显示平均环数! def show_avg(): print('你已进入显示移动平均环数系统!') a ...
- python学习日记(生成器函数进阶)
迭代器和生成器的概念 迭代器 对于list.string.tuple.dict等这些容器对象,使用for循环遍历是很方便的.在后台for语句对容器对象调用iter()函数.iter()是python内 ...
- python基础一 day14 生成器函数进阶
def generator(): print(123) content = yield 1 print('=======',content) print(456) arg = yield 2 '''' ...
- python基础一 day14 生成器函数进阶(1)
- Python_生成器函数进阶_39
def generator(): print(123) content = yield 1 #content接收的是send传的值 print('=======',content) print(456 ...
- Python之路----生成器函数进阶
def generator(): print(123) yield 1 print(456) yield 2 g = generator() ret = g.__next__() print('*** ...
- day14,函数的使用方法:生成器表达式,生成器函数
生成器表达式: #列表推导式 # y = [1,2,3,4,5,6,7,8] # x = [1,4,9,16,25,36,49,64] # x = [] # for i in y: # x.appen ...
- python基础(9)-迭代器&生成器函数&生成器进阶&推导式
迭代器 可迭代协议和迭代器协议 可迭代协议 只要含有__iter__方法的对象都是可迭代的 迭代器协议 内部含有__next__和__iter__方法的就是迭代器 关系 1.可以被for循环的都是可迭 ...
随机推荐
- CD4051的切换时间
CD4051:1 2 4 5 12 13 14 15 8个选择IO输入/输出端:3:I/O6:片选低电平有效,搞定平所有通道不通9 10 11:地址选择:功能:通过地址选择译码8个中的某个通道与3脚 ...
- 如何在cmd中运行PHP
我的php安装目录在 d:\php 那么 运行 cmd >d: >cd php 要让工作目录指向php.exe的安装文件夹 然后就可以用php指令了 比如 在该文件夹下面新建一个test. ...
- ObjextARX-VS2005-字符串转换
1.使用string必须添加头文件 #include"string"using namespace std; 2.使用CString必须添加头文件(在非MFC工程中) #inclu ...
- asp.net mvc 中使用 iframe 加载相应的静态html页面进行显示
<iframe src='<%=ResolveUrl("~/Content/HTML_file/Agreement.html")%>' <%@ Page ...
- 部署ASP.Net Core 2.1 項目到 IIS
用Asp.net core 2.1 寫了一個小的系統框架,記錄一下部署過程: 1. 首先是安裝 IIS 了,從 控制面板→程序→启用或关闭Windows功能→勾选Internet Informatio ...
- [转]在C#中使用托管资源和非托管资源的区别,以及怎样手动释放非托管资源:
托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源.托管资源的回收工作是不需要人工干预的,有.NET运行库在合适调用垃圾回收器进行回收. 非托管资源指的是.NET不知道如何回 ...
- Objective-C 类型转换
类型转换通常是指变量,从一种类型转换成另外一种类型.例如将一个long类型转换成int类型,变量转换通常 用下面的方式: (type_name) expression 在Objective-C中,我们 ...
- 读懂《HTML5网页开发实例详解》这本书
你还在用Flash嘛?帮主早不用了 乔布斯生前在公开信<Flash之我见>中预言:像HTML 5这样在移动时代中创立的新标准,将会在移动设备上获得胜利. ——国际巨头Google.苹果等都 ...
- 远程linux服务器mysql数据库导入和导出.sql文件
大部分情况本地开发环境为windows,部署的服务器为Linux,本地数据库导出.sql文件后需要远程导入服务器,具体如下. 首先连接服务器,即服务器ip,协议,端口,用户名及密码,可以通过ftp客户 ...
- [习题]输入自己的生日(年/月/日)#2 -- 日历(Calendar)控件的时光跳跃,一次跳回五年、十年前?--TodaysDate属性、VisibleDate属性
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/10/calendar_visibledate_birthday_dropdow ...