1.生成器优势
- 节省空间:生成器按需生成值,避免了一次性加载所有数据到内存中。这对于处理大型数据集尤其重要。
- 惰性计算:生成器支持惰性计算,只有在需要时才计算值。这在处理无限序列或需要动态生成数据的场景中非常有用。
- 一次性使用:生成器通常是一次性的,一旦遍历完毕,就需要重新创建生成器对象。
2.案例
- 斐波拉契(1,1,2,3,5,8.。。。)
1 #!/usr/bin/python 2 def feibo(n): 3 '''1 1 2 3 5 8....''' 4 a,b=0,1 5 for i in range(n): 6 yield b 7 a,b=b,a+b 8 9 f=feibo(10) 10 # print(f.__next__()) 11 # print(f.__next__()) 12 # print(f.__next__()) 13 # print(f.__next__()) 14 # print(f.__next__()) 15 # print(f.__next__()) 16 # print(f.__next__()) 17 # print(f.__next__()) 18 # print(f.__next__()) 19 # print(f.__next__()) 20 # print(f.__next__()) 21 # print(f.__next__()) 22 # StopIteration 23 for i in f: 24 print(i)View Code
- 并行
1 #!/usr/bin/python 2 #生成器 3 4 def cusumer(name): 5 """定义消费者进店等着消费""" 6 print('%s进店了等着吃饺子了'%name) 7 while True: 8 count_dumpling =yield #新增了个参数count_dumpling,需要被传进来 9 print('%s吃了%s个饺子'%(name,count_dumpling)) 10 11 def productor(): 12 """生产者生产流程""" 13 c1 =cusumer('小张') 14 c2 =cusumer('小李') 15 c1.__next__() #需要调用 16 c2.__next__() #需要调用 17 for i in range(10): 18 print('饺子来了') 19 c1.send(i+1) #对应cosumer里面的while true 20 print('饺子来了') 21 c2.send(i+1) 22 productor()View Code 标签:__,.__,python,生成器,next,print From: https://www.cnblogs.com/Little-Girl/p/17987913