一、创建生成器(以快速生成列表为例)
生成器的本质是节约内存。
在python2中的xrange和python3中的range实质上就是一个典型的列表生成器。后面均是以python3为例。range快速生成列表的方法:[x for x in range(num)] / [x+y for x in range(num) for y in range(num)]等
创建生成器:将[ ]换成()后,使得列表的结果不会直接全部输出,而是将其转换成列表生成器,通过next方法将结果依次输出,或for循环方法将结果全部输出。这种方法很大程度了节约了内存空间。在res中实质上保存的是一种算法,(x for x in range(num)) / (x+y for x in range(num) for y in range(num))
二、将函数返回值转换成生成器
比如,著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:
1, 1, 2, 3, 5, 8, 13, 21, 34, ...
斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容易:
定义一个斐波那契函数:
def fibonacci (max):
first,second,n = 0,1,0