python生成器
2017-11-06 19:17
169 查看
生成器:本质上来说就是迭代器,好处是不用像生成一个列表那么占内存
生成器有两种:1)生成器函数:
带有yield关键字执行函数之后返回的是一个生成器,函数内的代码并不会真正执行,想让生成器往外吐数据,需要使用next方法
def cloth(): for i in range(100): yield '衣服%s' % i g = 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 line g = 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/count g = averager() g.__next__() print(g.send(20)) print(g.send(30)) print(g.send(28))
send从那一个yield开始接着执行,就把一个值传给了那个yield
send不能用在第一个触发生器
生成函数中有多少个yield就必须有多少个next+send
从生成器中取值的三种方式
#NO.1 g = generator() for i in g: if 判断语句 print(i) #NO.2 g = 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__()
相关文章推荐
- python学习19--生成器
- Python之迭代器、生成器、装饰器和递归
- python生成器
- Python 高级特性 : 生成器
- Python函数式编程指南(四):生成器
- python-基础知识之三元表达式、列表推导式、生成器表达式
- Python函数式编程指南(四):生成器
- python高级特性-生成器
- 自动化运维Python系列(四)之装饰器和生成器
- python基础学习六:python生成器
- python06-切片、列表生成器
- Python3 迭代器与生成器
- python生成器generator用法实例分析
- python生成器,函数,数组
- python3 列表生成式、生成器、迭代器
- Py修行路 python基础 (十一)迭代器 与 生成器
- Python生成器与迭代器的总结
- Python学习笔记——生成器
- python 学习之路(迭代器&生成器)
- python高级: 解析式、生成器