python高级部分-生成器

1.什么是生成器?

在python中,一边计算一遍循环的机制被称为生成器(generator),极大节省了内存空间。

2.生成器的创建

2.1生成器创建方法1

首先,我们可以通过[x for x in range(10) ]创建一个列表。

image.png

想要创建一个生成器,只需把[]改为()即可。

image.png

在列表中,可以直接打印数据,生成器保存的是算法,如果需要打印生成器中的数据,可以通过next()方法逐个打印,没有更多数据时,就会抛出StopIteration的错误。正常情况下,我们会用for循环代替next()方法,并且不用担心出现StopIteration的错误。


2.2生成器创建方法2

在函数中使用yield关键字,函数就变成了生成器。以斐波那契数列为例:
1, 1, 2, 3, 5, 8, 13, 21, 34, ...

def f(max):
      n,a,b=0,0,1
      while n<max:
              yield b
              a,b=b,a+b
              n=n+1
image.png

同样的,把函数改成generator后,我们基本上从来不会用next()来调用它,而是直接使用for循环:

image.png

generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。

要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容