Python学习笔记-生成器

来源:互联网 发布:软件人才缺口多少 编辑:程序博客网 时间:2024/05/23 19:23

有时候一个列表里的元素过多,多到计算机内存存不下来,我们就需要想一个办法解决这个问题,如果能在需要的时候生成新元素就好了,可以用生成器。生成器–一种边循环边根据某种算法计算生成元素的机制

如何创建一个生成器呢,最简单的方法通过修改一下列表生成器创建。

n = (n for n in range(10))

没错就是把列表生成器的 [] 换成了 () n就是一个生成器。
如果逻辑变得复杂该怎么办呢,那就使用下一个办法:改造一个函数使其成为一个生成器。

def fib(max):    n,a,b = 0,0,1    while n < max:        yield b        a,b = b,a+b        n = n+1                     

这就生成了一个能生成斐波那契数的生成器,他的原理是遇到yield就中断直到下一次调用再继续执行。yield的作用类似return如上面的例子就是返回b的值。

要让生成器生成元素需要先创建生成器对象b,再使用next(b)
生成器是可以迭代的所以能使用如下代码生成

b = fib(max)for n in b:    ...
0 0
原创粉丝点击