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循环的都是可迭 ...
随机推荐
- B.选点
链接:https://ac.nowcoder.com/acm/contest/368/B 题意: 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi.现在要选出尽量多的点. 对于任意一棵子树,都 ...
- JavaScript特点、优缺点及常用框架
参考来源: http://www.cnblogs.com/SanMaoSpace/archive/2013/06/14/3136774.html
- Sql 2000系统表 语句查询表结构
SQL2000系统表的应用 –1:获取当前数据库中的所有用户表 select Name from sysobjects where xtype=’u’ and status>=0 –2:获取 ...
- WebView使用遇到的坑
1.为了防止内存泄漏,关闭界面的时候一定要记得 webView.distroy() 并且把webView置为null 2.尽量不要在代码中new控件 尽量不要在代码中new控件 尽量不要在代码中n ...
- 利用串口的硬件buf收发数据
很多单片机的串口可以设置硬件接收和发送的buf,这样可以减少中断的次数和cpu的浪费,方法就是:发送时根据串口波特率(通讯格式N-8-1)和硬件buf缓冲的字节数计算定时器的间隔(小于1000*buf ...
- JSP文件上传,好烦啊、、
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- JavaScript30-7 数组的一些基本方法
本次来学习数组的一些方法,之前学习的js数组的方法是在第四课里面(没有写到随笔里面) 之前第四课主要讲的是 filter() ,map() 这次课程主要介绍的是 some()`.`every()`.` ...
- 解决 Cocos2d-x 3.2 error C1041: 无法打开程序数据库vc120.pdb
单个项目解决方案 解决方案是为项目添加 /FS (Force Synchronous PDB Writes) 编译选项,具体位置在: 一劳永逸的解决方案 直接修改cocos的项目模板templates ...
- 闹心的CSDN
近来搜索技术文章时,每次来到csdn上时,显示全文就提示登陆. 唉登陆就登陆吧,记不清账号了,就用手机号获取验证码.然后更改密码.我靠,密码居然要8位以上,要有大小写字母.数字和标点符号的组合... ...
- java字符串拼接技巧(StringBuilder使用技巧)
在平时的开发中,我们可能会遇到需要拼接如下格式的字符串(至少我是遇到了很多次): 1,2,3,4,5,6,7,8,9,10,11,12,12,12,12,34,234,2134,1234,1324,1 ...