Python高级特性--生成器

Python高级特性--生成器,第1张

概述通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 #要创建一个generator,第一种只要把一个列表生成式的[]改成(),就创建了一个generator:L = [x*x for x in range(1,11)]pr

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含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高级特性--生成器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1195386.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存