这是 Python 基础课的第十节 - 生成器和迭代器。该系列包含 11 节,目录如下:
生成器和迭代器:简约不简单
装饰器:高端不简单
迭代器 (iterator) 是一个有状态的 (stateful) 对象,只有在调用时才产生下一个值,而可迭代对象 (Iterable) 是无状态的 (stateless) 对象。迭代器是可迭代对象,但可迭代对象并不总是迭代器。
生成器 (generator) 是迭代器。创建生成器有两种方法,用生成函数和生成器表达式。普通函数使用 return 语句,而生成函数使用 yield 语句。回顾文章的列表解析式使用的是方括号,而生成器使用的是圆括号,两者区别在于:
列表可以被重复多次,生成器只可以被用一次。
列表是储存值的容器,生成器是产生值的方法。
在 Python 里,
字典用来创建映射关系
函数用来创建可调用对象
生成器用来创建迭代器
当想要可用惰性计算的可迭代对象时,考虑用迭代器;当想创建迭代器时,考虑用生成器;当想创建生成器时,考虑用生成函数 (用 yield) 或生成表达式 (用小括号 ())。
所有学过的生成器、迭代器、可迭代对象、容器型变量、解析表达式之间的关系总结于下图。
付费用户(付 1 赠 1)可以获得:
观看课程视频 (63 分钟)
PDF 课件
Python 代码 (Jupyter Notebook)
PDF 课件