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

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

作者: 树懒吃糖_ | 来源:发表于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