17.生成器和推导式 - 教程

目录

1. 生成器

1.1 生成器函数

1.2 生成器表达式

2. 推导式

3. 集合推导式

4. 字典推导式

5. 协程


很多时候手写迭代器类太啰嗦,而生成器则可以帮我们更好解决这一障碍,使用生成器表达式能够允许我们在一个语句中重写循环整个逻辑,后面要学的列表推导式就是基于此。

import time
sleepy = ['no pause', time.sleep(1), time.sleep(2)]
print(sleepy[0])

集合字面量是贪婪的,会计算所有元素。即表达式time.sleep会执行2次。中间会sleep暂停。

如果数据量特别大或者表达式计算专门艰难,集合就可能会成为性能瓶颈。最好的方法就是使用生成器或生成器表达式。

生成器功能是建立在迭代器的原则上的,这个原则就是惰性求值。

惰性求值是的无限迭代器成为可能,这样可能按需供应值,且值不会耗尽。


1. 生成器

生成器(generator)就是迭代器(iterator),而且是一种“自带挂起/恢复能力”的特化迭代器。
用一句话概括:

生成器 ≈ 迭代器 + 状态保存 + 惰性生产

生成器有两种形态。


posted @ 2025-09-21 10:26  yfceshi  阅读(11)  评论(0)    收藏  举报