美文网首页
Python浅谈列表解析和生成器 2018-07-24

Python浅谈列表解析和生成器 2018-07-24

作者: 丶丶勿忘初心 | 来源:发表于2018-07-24 14:10 被阅读37次
    1. 利用for、range()生成一个列表
    i = []
    for x in range(10):
        if x % 2 == 0:
            i.append(x)
    print(i)
    

    [0, 2, 4, 6, 8]

    1. 列表解析(实则为生成列表的表达式)
    [i for i in range(10) if i % 2 ==0]
    

    [0, 2, 4, 6, 8]

    可见输出结果是一样的

    • 缺点是运行一次就会生成整个列表,列表很大的话就会消耗大量的内存空间。
    • 对于复杂的循环,传统的语法更容易理解,如for循环嵌套。
    1. 生成器
    (i for i in range(10) if i % 2 ==0)
    

    <generator object <genexpr> at 0x0000017CA889A8E0>

    返回一个生成器,而不是列表。
    因此我们可以对生成器进行计算,从中取值。

    for i in (i for i in range(10) if i % 2 ==0):
        print(i)
    

    0
    2
    4
    6
    8

    • 如果创建一个含有大量元素的列表,那将会占用很大的空间,这时我们可以利用生成器边循环边计算,不用创建完整的列表,这样就会节省大量的空间。
    • python中,边循环边计算的机制就称为生成器。

    相关文章

      网友评论

          本文标题:Python浅谈列表解析和生成器 2018-07-24

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