美文网首页Python小哥哥
Python列表生成器

Python列表生成器

作者: 我爱学python | 来源:发表于2019-06-04 15:20 被阅读7次

    前言

    通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅访问前面几个元素,那后面绝大多数占用的空间都白白浪费了。

    python生成器是用来代替"不一定能够使用全部元素的数组",等到使用某一元素时,才生成该元素,用来节省空间.

    生成器创建方式

    第一种:

    在前面我们介绍python列表生成式,这里我们只需要把列表生成式的[]改成(),就创建了一个generatro

    创建L和g的区别仅在于最外层的[]和(),L是一个list,而g是一个generator

    上面表达式中我们可以直接列出list(L)的每一个元素,但我们打印g的时候,却打印了g的类型,那么,我们如何打印generator的每一个元素呢?

    如果要一个一个打印出来,可以通过next()函数获得generator的下一个返回值:

    generator保存的是算法,每次调用next(g),就计算出g的下一个元素的值,知道计算出最后一个元素,没有更多元素时,抛出StopIteration的错误。

    这样不断调用next(g)实在是太变态了,生成器是可迭代对象

    这样,知道用什么来了吧?

    当然是使用强大的for...in迭代来实现

    通过for迭代的方式来循环生成器,并不用关心StopIteration的错误。

    使用关键字 yield 关键字

    generator非常强大。如果推算的算法比较复杂,用类似列表生成式的for循环无法实现的时候,还可以用函数来实现

    斐波那契数列生成器


    在执行生成器时,可以使用 生成器.send(param) 方法

    send方法不光是执行一步next操作,还会把send里面的参数传到生成器中充当yield表达式的返回值

    相关文章

      网友评论

        本文标题:Python列表生成器

        本文链接:https://www.haomeiwen.com/subject/wyzlxctx.html