
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
#要创建一个generator,第一种只要把一个列表生成式的[]改成(),就创建了一个generator:L = [x*x for x in range(1,11)]print(L)l = (x*x for x in range(1,11))print(l)#[1,4,9,16,25,36,49,64,81,100]#<generator object <genexpr> at 0x00000133B2F035E8>#L是一个List,而g是一个generator
斐波拉契数列
def fib(max): n,a,b = 0,1 while n < max: print(b) a,b = b,a + b n = n + 1 return 'done'
#要把fib函数变成generator,只需要把print(b)改为yIEld b就可以def fib(max): n,1 while n < max: yIEld b #generator的函数,在每次调用next()的时候执行,遇到yIEld语句返回,再次执行时从上次返回的yIEld语句处继续执行。 a,a + b n = n + 1 return 'done'总结
以上是内存溢出为你收集整理的Python高级特性--生成器全部内容,希望文章能够帮你解决Python高级特性--生成器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)