码迷,mamicode.com
首页 > 其他好文 > 详细

生成器

时间:2018-04-30 11:58:18      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:表达式   记录   ret   print   range   调用   while   有一个   +=   

生成器:在调用是才生成相应的数据,只记录当前的位置,只有一个__next__()方法

简单生成器:

a=[i*2for i in range(10)]# 列表生成式
print(a) #打印是列表
b=(i*2for i in range(10))#生成器表达式
print(b) #打印是当前位置
print(b.__next__()) #用__next__方法取下一个数据,位置移动到下一位
print(b.__next__()) #用__next__方法取下一个数据,位置移动到下一位
for i in b: #可用for循环取出所有数,从当前位置开始
print(i)

yied可以把一个函数变成生成器
def fib(max):
n,a,b=0,0,1
while n<max:
#print(b)
yield b
a,b=b,a+b
n+=1
return ‘done‘


f=fib(10)
print(‘_________‘)
print(f.__next__())
print(f.__next__())
print(‘_________‘)
print(f.__next__())

生成器

标签:表达式   记录   ret   print   range   调用   while   有一个   +=   

原文地址:https://www.cnblogs.com/zhowhen/p/8972921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!