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循环的都是可迭 ...
随机推荐
- UItableView动态行高 用这两句实现(可以自己计算数据来实现,一般在model中计算)
// 动态行高 self.tableView.rowHeight = UITableViewAutomaticDimension; // 预估行高 self.tableView.estimatedRo ...
- VUE循环菜单
- 采集-telegraf
1 介绍 Telegraf是一款Go语言编写的metrics收集.处理.聚合的代理其设计目标是较小的内存使用,通过插件来构建各种服务和第三方组件的metrics收集Telegraf由4个独立的插件驱动 ...
- 关于presentViewController 后调用pushViewController
错误代码: LoginViewController *loginVc = [[LoginViewController alloc] int]; [self presentViewController ...
- 牛客练习赛42C(枚举权值)
传送门 思路:既然无法枚举每个情况,那就枚举每个出现过的权值,加和.那么每个权值出现了多少次呢?用总数减去一次都选不中这个数的次数即可,类似概率的方法. #include <bits/stdc+ ...
- Codeforces Round #396 (Div. 2) A
While Mahmoud and Ehab were practicing for IOI, they found a problem which name was Longest common s ...
- 转 用好HugePage,告别Linux性能故障
超过32G 的数据库,可以是使用如下方法配置. ######### Slow Performance with High CPU Usage on 64-bit Linux with Large SG ...
- vue echarts 大小自适应
窗口大小时候 ,echarts图自适应 在创建图表的方法中直接,用resize方法 let myChart=this.$refs.myChart; let mainChart = echarts.in ...
- HDU 5974 A Simple Math Problem 数学题
http://acm.hdu.edu.cn/showproblem.php?pid=5974 遇到数学题真的跪.. 题目要求 X + Y = a lcm(X, Y) = b 设c = gcd(x, y ...
- IIS网站设置禁止IP访问设置方法
本文设置系统为Windows2003.IIS版本是6.0. 打开IIS管理器,在iis管理器左侧单击打开网站下面的相应需要设置的网站,并在此网站上右键,选择属性,即可打开该网站属性进行相关设置. (i ...