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

生成器创建的两种方式

时间:2019-08-22 11:28:23      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:两种   span   bsp   print   lse   python   false   obj   int   

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

  

生成器创建的两种方式

标签:两种   span   bsp   print   lse   python   false   obj   int   

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

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