生成器
Python生成器(Generator)教程
什么是生成器
生成器(Generator)是Python中一种特殊的迭代器,它允许你按需生成值,而不是一次性生成所有值并存储在内存中。这在处理大数据集或无限序列时特别有用。
生成器的主要特点:
- 按需生成值,节省内存
- 保持状态,可以暂停和恢复执行
- 语法简洁,易于实现
创建生成器的两种方法
1. 生成器表达式
生成器表达式与列表推导式类似,但使用圆括号()而不是方括号[]:
生成器表达式适用于简单的转换和过滤操作。
2. 生成器函数
使用yield关键字定义的函数就是生成器函数:
生成器函数在每次调用next()时执行到下一个yield语句,然后暂停,保持所有局部变量的状态。
生成器的使用
基本迭代
手动控制
生成器的高级特性
1. 生成器状态
生成器保持其执行状态,包括局部变量和指令指针:
2. 生成器返回值
Python 3.3+允许生成器使用return返回值:
3. 生成器委托(Python 3.3+)
使用yield from可以委托给另一个生成器:
实际应用示例
1. 斐波那契数列生成器
2. 读取大文件
3. 无限序列
生成器与协程
Python的生成器也可以用于协程编程,通过.send()方法可以向生成器发送值:
性能考虑
- 内存效率:生成器按需生成值,适合处理大数据集
- 速度:生成器通常比列表推导式慢,但内存占用更少
- 一次性使用:生成器只能迭代一次,如果需要多次使用,可以转换为列表或重新创建生成器
练习题:杨辉三角生成器
总结
生成器是Python中强大的工具,特别适合:
- 处理大数据集
- 实现无限序列
- 构建数据处理管道
- 协程编程
掌握生成器可以显著提高代码的内存效率,并使你的Python代码更加Pythonic。

