首页 > 编程语言 > 详细

净心诀---python3生成器

时间:2019-12-17 15:41:43      阅读:104      评论:0      收藏:0      [点我收藏+]

 

生成器的作用----减少程序运行的内存开销

生成器特点:

1、一个一个的取值,而不是一次性把所有数据创建出来,迭代器中的数据不取不创建
2、只能按照顺序取,不能跳过也不能回头
3、一个迭代器中的数据只能从头取到尾一次

 

生成器函数没有return,利用yield返回

一个简单的生成器

1 # 这是一个简单的生成器
2 def SimpleTest():
3     print("this is first")
4     yield 1
5     print("test is second")
6     yield 2

我们可以利用生成器自带函数__next__()来一个一个取值

1 ret = SimpleTest()
2 print(ret.__next__())

思考:下面的代码结果是什么

 1 def SimpleTest():
 2     print("this is first")
 3     yield 1
 4     print("test is second")
 5     yield 2
 6 
 7 gen = SimpleTest()
 8 
 9 print(list(gen))
10 print(=*20)
11 for i in gen:
12     print(i)

利用=分开输出结果

结合生成器的特点,我们可以大致推断出是怎么样的一种结果

结果:

技术分享图片

 

 同一个生成器一次只能取一回,所以上述for循环打印时,生成器中已经没有值可取。

 

思考:下面的代码输出结果应该为多少?

 1 def func():
 2     for i in range(5):
 3         yield i
 4 
 5 g1 = g2 =func()
 6 for i in g1:
 7     print(i)
 8 for i in g2:
 9     print(i)
10 
11 print(=*40)
12 
13 g3 = func()
14 g4 = func()
15 for i in g3:
16     print(i)
17 for i in g4:
18     print(i)

净心诀---python3生成器

原文:https://www.cnblogs.com/zakker/p/12054623.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!