python 中的生成器

定义:

python中一边循环一边计算的机制,成为生成器:generator。生成器是一个函数,它记住上一次返回时在函数体中的位置。对生成器的第二次(或第n次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。生成器不仅“记住”了它数据状态,还记住了它在流控制构造中的位置。

生成器的特点:

1、节约内存

2、迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整
个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的

创建生成器的方式

只要把列表生成式[]改成()

L=[x*2 for x in range(5)]
G= (x*2 for x in range(5))

我们可以直接通过打印L,G是一个生成器,可以通过next(G) 访问G中的元素,也可以通过G.next()访问元素。

如果推荐的算法比较复杂,用类似生成式的for循环无法实现的时候,可以使用函数类实现。比如著名的斐波拉契数列,除了第一个和第二个数外,任意一个数都可以由前两个数相加。

def fib(times):
    n=0
    a,b=0,1
    while n<times:
        print(b)
        a,b=b,a+b
        n+=1
    return 'done'

把print修改为yield就可以生成生成器了。

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

猜你喜欢

转载自blog.csdn.net/jiaojinlin/article/details/86427389
今日推荐