生成器创建的两种方式

生成器能让看上去的一个函数暂停执行,通过next()或send()继续执行

1,如同列表生成方式,把[]换成()

1 nums = (x*2 for x in range(10))
2 
3 for num in nums:
4     print(num)

结果:

0
2
4
6
8
10
12
14
16
18

  

2.函数 + yield

 1 # 第二种方式
 2 def creat_num(all_num):
 3     a,b = 0,1
 4     current_num = 0
 5     while current_num < all_num:
 6         yield a  # 如果一个函数中有yield语句,那么这个就不再是函数,而是一个生成器的模板
 7         a, b = b, a+b
 8         current_num += 1
 9 
10 # 如果在调用creat_num的时候,发现这个函数中有yield,那么此时,不是调用函数,而是创建一个生成器对象
11 obj = creat_num(10)
12 
13 for num in obj:
14     print(num)
0
1
1
2
3
5
8
13
21
34

  

原文地址:https://www.cnblogs.com/yifengs/p/11392869.html