python高级部分-生成器

1.什么是生成器?

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

2.生成器的创建

2.1生成器创建方法1

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

image.png

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

image.png

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


python高级部分-生成器_第1张图片

2.2生成器创建方法2

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

def f(max):
      n,a,b=0,0,1
      while n
python高级部分-生成器_第2张图片
image.png

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

python高级部分-生成器_第3张图片
image.png

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

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

你可能感兴趣的:(python高级部分-生成器)