Python生成器
来源:互联网 发布:知乎语录 编辑:程序博客网 时间:2024/05/20 18:50
#author F#迭代器#列表生成式list_build = [2*i for i in range(0, 24)] #2*i可以改成某函数print(list_build)# 相当于三行代码list_man_made = []for i in range(0, 24): list_man_made.append(2*i)print(list_man_made)#生成器 : 只有在调用时候才会产生对应的数据 只记住当前的位置 只有一个__next__()方法# cc = [2*i for i in range(0, 24000000000)]'''c = ( 2*i for i in range(0, 24000000000)) #c存的是内存地址,存了一个算法,并没有将整个列表生成for i in c: print(i)#生成器和列表的区别是:调用时候才有数据 不调用则没有数据 加快了运行时间print(c.__next__())'''#斐波那契数列#1,1,2,3,5,8,13,21,...def fib(max): n, a, b = 0, 0, 1 while n<max: print(b) a, b=b, a+b n = n+1 return 'done'##赋值语句 a,b=b,a+b 赋值过程# t = (b, a+b) #t是一个tuple# a=t[0]# b=t[1]fib(100)def fib1(max): n, a, b = 0, 0, 1 while n<max: yield b a, b=b, a+b n = n+1 return 'done' #用for循环done不会打印print(fib1(10))f = fib1(10)print(f.__next__())print(f.__next__())print("干点别的事去")print(f.__next__())print(f.__next__())print("==start==")for i in f: print(i)##函数有yield存在就回变成一个生成器 return的值用异常抓取def fib2(max): #这个已经不是函数了 只要有yield存在 就不是函数了 n, a, b = 0, 0, 1 while n<max: yield b a, b = b, a+b n = n+1 return "done" #可以用来抛出异常g = fib2(6)while True: try: x = next(g) print("g:",x) except StopIteration as e: print("Generator return value:", e.value) break
阅读全文
0 0
- Python 生成器
- Python生成器
- python生成器
- python 生成器
- python生成器
- python生成器
- python生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- Python--生成器
- python 生成器
- Python 生成器
- python-生成器
- Python生成器
- Ionic 热更新插件 cordova-hot-code-push-plugin的运用
- 解决Spring+Quartz无法自动注入bean问题
- SQL Server执行计划的理解
- 给maven项目加上ant编译
- Spring Boot 之 RESRful API 权限控制
- Python生成器
- 设计模式拾荒之状态模式(State Pattern):拒绝大量的 If 与 Switch
- Java基础——封装
- UML类图几种关系的总结
- Spherical linear interpolation for Quaternions (四元数的球面插值计算)
- yii2 高级版安装,配置环境变量,composer安装
- happens-before
- 用 GDB 调试程序
- final修饰变量 与 不可变对象