生成器函数:
生成器函数使用yield返回返回值。函数并没有结束,还可以继续执行,生成器一次返回一个(组)数据。
gen = func1()
生成器对象
循环生成器对象时,一次获取一个值
for i in gen:
print(i)
将生成器对象强制类型转换为列表
print(list(gen))
print(next(gen)) # “h”
print(“123456”)
print(next(gen)) # “e”
print(“abcdef”)
for i in gen:
print(i,end=" ") # “l” “l” “o”
元组生成器
gen1 = ( 2 ** i for i in range(1,65) )
print(gen1)
print(list(gen1))
生成器的使用场景
产生或处理大量数据,使用生成器一个一个的处理(生成),用于节省内存空间。
range(100) 产生某个范围内的整数。
斐波那契序列 (兔子序列)
def feibo(n):
a,b,s = 0,1,1
while s < n:
s += 1
yield a # 返回数据不会结束函数
a,b = b,a+b
for i in feibo(10000):
print(i)
input()