python生成器
来源:互联网 发布:淘宝店铺域名怎么设置 编辑:程序博客网 时间:2024/06/05 21:11
生成器:本质上来说就是迭代器,好处是不用像生成一个列表那么占内存
生成器有两种:
1)生成器函数:
带有yield关键字
执行函数之后返回的是一个生成器,函数内的代码并不会真正执行,想让生成器往外吐数据,需要使用next方法
def cloth(): for i in range(100): yield '衣服%s' % ig = cloth() # g是一个生成器,内部代码没有执行for i in g: print(i)
生成器监听文件末尾追加的例子
def tail(): f = open('文件名', 'r', encoding='utf-8') f.seek(0, 2) while True: line = f.readline() if line: yield lineg = tail()for i in g: print(i.strip())
生成器中send的用法
动态平均值
def averager(): total = 0 count = 1 averager = None while True: term = yield averager count += 1 total += term averager = total/countg = averager()g.__next__()print(g.send(20))print(g.send(30))print(g.send(28))
send从那一个yield开始接着执行,就把一个值传给了那个yield
send不能用在第一个触发生器
生成函数中有多少个yield就必须有多少个next+send
从生成器中取值的三种方式
#NO.1g = generator()for i in g: if 判断语句 print(i)#NO.2g = generator()g.send(None)#g = generator()g.__next__()
python3中用yield from取值
def func(): a = 'AB' b = 'CD' yield from a # from后面接收一个可迭代的对象 yield from b
2)生成器表达式:
与列表解析相似只是把列表解析外面的中括号改为小括号
g = (i*i for i in range(10)) # g就是一个生成器g.__next__()
阅读全文
0 0
- Python 生成器
- Python生成器
- python生成器
- python 生成器
- python生成器
- python生成器
- python生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- Python--生成器
- python 生成器
- Python 生成器
- python-生成器
- Python生成器
- 二截贪食蛇(BCS Plus)
- error char hashcode
- Python字符串处理函数记录
- 通过一个故事来看java nio
- java中接口
- python生成器
- 二维list 无法转为二维的numpy.array?
- gitlab使用总结
- Maven和Gradle对比
- (4)ResultType
- github 入门,如何上传本地项目到github托管
- 7-10 QQ帐户的申请与登陆(25 分)
- 01 REST框架原始写法,与表单Form类似,实例
- 面向对象概念精解