python 的generator

来源:互联网 发布:淘宝如何举报卖家违规 编辑:程序博客网 时间:2024/05/18 03:48

以下内容总体是参考了廖雪峰(大大)的python教程,写下的笔记吧。
放一个廖大大的链接:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138681965108490cb4c13182e472f8d87830f13be6e88000

为什么: 直接生成列表,由于受内存限制,列表的容量有限。
如果列表的元素可以用某种算法推导出来,就可以利用一种机制在循环中不断推导后续的元素 ,称为生成器。

创建generator的方法:
1.把一个列表生成式的[ ] 改为 ()

@python>>> L = [ x*x for x in range(10)]>>> L[0,1,2,3,4,5,6,7,8,9]>>> g = ( x*x for x in range(10))>>> g<generator object <genexpr> at 0x104feab40>>>>g.next()0>>>g.next()1>>> for n in g    //因为生成器g也是一个可以迭代的对象...     print n0149162536496481

另一种实现generator的方式:

一种产生斐波那契序列的函数
这里写图片描述

改为生成器 只需把print 改为 yield
这里写图片描述

generator和函数执行流程不一样,函数顺序执行,遇到return或者最后一句返回,而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时,从上次返回的yield语句处继续执行。

这里写图片描述

这里写图片描述

以上内容均参考廖雪峰的python教程
http://www.liaoxuefeng.com/

侵删。

0 0