在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
创建一个generator主要有两种方法:
一、把一个列表生成式的[]改成()
二、一个函数定义中包含yield关键字
- generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。
- 变成generator的函数,在每次调用next()或for循环调用的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
小结
generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。
要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。
后记:
创建一多元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。(生成器可以只关心感兴趣的元素,节省空间,避免浪费)。
网友评论