美文网首页
列表推导式和生成器的优缺点

列表推导式和生成器的优缺点

作者: 树懒吃糖_ | 来源:发表于2019-12-19 17:51 被阅读0次

    python3 中列表推导式和生成器的优缺点

    1. 列表推导式将所有结果一次性加载到内存
      生成器不会将所有的值一次性加载到内存中,延迟计算,一次返回一个结果。yield 是生成器的关键,调用生成器函数,不会立马执行该函数里面的代码, 而是会返回一个生成器<generator object...>
    #列表生成器
    a = [i for i in range(10)]
    print(a)
    >>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    #生成器
    generator = (i for i in range(1, 5))
    print(generator)
    >>><generator object <genexpr> at 0x0000000003B2BCA8>
    
    def func():
        for i in range(10):
            yield i
    print(func())
    >>><generator object func at 0x0000000003B0BCA8>
    for i in func():
        print(i)
    >>>1
    2
    3
    4
    5
    6
    7
    8
    9
    
    
    1. 列表推导式可以遍历多次,生成器只能遍历一次
    a = [i for i in range(10)]
    print(a)
    print(a)
    >>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    generator = (i for i in range(1, 5))
    for i in generator:
        print(i)
    for i in generator:   #这部分不会运行
        print('done')
        print(i)
    >>>1
    2
    3
    4
    
    1. 小数据时使用列表推导式计算速度快,大数据时使用生成器,不容易爆内存,代码容易维护。

    ----------------------------------------END---------------------------------

    相关文章

      网友评论

          本文标题:列表推导式和生成器的优缺点

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