正在加载 Python 环境…
← 第32课 第33课:生成器:要一个给一个的魔法 第34课 →

第33课:生成器:要一个给一个的魔法

for 循环背后发生了什么?

for x in [1, 2, 3] 看起来简单,但 Python 在背后做了什么?

💻 在 Thonny 运行:手动迭代

iter() 把列表变成迭代器next() 每次取一个值。for 循环其实就是不断调用 next(),直到 StopIteration

yield:让函数暂停的魔法

普通函数 return 一次就结束了。yield 让函数暂停,下次调用时继续

💻 在 Thonny 运行:第一个生成器

🖥️ 计算机小知识

内存就像一张书桌,空间有限。如果你要处理 1 亿个数字,全部放进列表,电脑可能直接卡死!

生成器的聪明之处:不把所有数据一次性放进内存,而是要一个算一个。就像你吃自助餐,不用把所有菜端到桌上——吃完一盘再去拿下一盘。

这就是内存层级的重要性:CPU 缓存最快(但最小)→ 内存很快 → 硬盘最慢(但最大)。省内存 = 让程序跑得更快更稳!

生成器表达式

列表推导式用 [],生成器表达式用 ()——同样的事,但不占内存:

💻 在 Thonny 运行:生成器表达式 vs 列表推导式

itertools:生成器的好帮手

💻 在 Thonny 运行:itertools 常用工具

练习

💻 在 Thonny 运行:无限斐波那契生成器