整理Python生成器
来源:互联网 发布:java程序设计是什么 编辑:程序博客网 时间:2024/06/03 05:49
一、生成器简介:
- 只有在调用时才生成相应的数据
- 只记录当前位置
- 只有一个方法__next__()
#!/usr/bin/env python# -*- coding:utf-8 -*-a = [i*2 for i in range(10)] #列表print(a)b = (i*2 for i in range(10)) #生成器generatorprint(b)
结果:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
<generator object <genexpr> at 0x107027200>
二、yield和StopIteration
def fib(n): a, b = 0, 1 for i in range(n): yield b #print(b)改为yield b 即变为生成器 a,b = b,a+bf = fib(10)while True: try: x = f.__next__() print(x) except StopIteration as e: print('error ',e.value) break
三、generator和函数的执行流程不一样:
- 函数是顺序执行,遇到return语句或者最后一行函数语句就返回。
- 而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
import timedef consumer(name): print('%s 快来吃包子啊!' % name) while True: baozi = yield
print('包子%s来了,被%s吃啦' % (baozi,name))def producer(): c1 = consumer('amber') c2 = consumer('lucy') c1.__next__() c2.__next__() for i in range(5): c1.send(i) c2.send(i)producer()
阅读全文
0 0
- 整理Python生成器
- python整理十——生成器表达式与列表解析
- python函数作用域、迭代器与生成器知识点整理
- Python 生成器
- Python生成器
- python生成器
- python 生成器
- python生成器
- python生成器
- python生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- Python--生成器
- python 生成器
- 矢量图片添加动画 AnimatedVectorDrawable
- 【scikit-learn】如何进行模型参数的选择
- ucenter
- 【小技巧】通过SD卡传文件到开发板就是这么简单!
- 微信小程序开发出现未找到入口 app.json 文件解决方法
- 整理Python生成器
- MonoDevelop相关设置
- ubuntu 16.04 安装openjdk-7
- E. Sasha and Array——矩阵+线段树
- Android性能优化典范之多线程篇
- MongoDB 快速上手
- Java并发编程之进程
- drop、truncate和delete的区别
- Spring Boot热部署(Gradle+IDEA)