Python生成器

来源:互联网 发布:耳机调音软件 编辑:程序博客网 时间:2024/05/20 20:03
在Python中,一边循环一边计算的机制,称为生成器(Generator)。特殊场景下可以节约内存开支。
要创建一个generator
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x104feab40>第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。

>>> g.next()
0

一般情况下使用for循环,而不使用next去遍历。
>>> g = (x * x for x in range(10))
>>> for n in g:
...     print n

斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:
1, 1, 2, 3, 5, 8, 13, 21, 34, ...

第二种方法:generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
原创粉丝点击