模块 2 - 控制流 · 第 08 课
for、while 与 range
用 for 处理序列,用 while 表达重复直到条件改变,并用 range 生成整数序列。
for:逐项处理
losses = [0.9, 0.7, 0.5]
total = 0.0
for loss in losses:
total += loss
print(total / len(losses))
for 不需要手动维护索引,它会依次取出可迭代对象中的元素。循环体必须缩进。
range:生成计数
for epoch in range(3):
print(f"epoch {epoch}")
range(3) 产生 0、1、2,停止值不包含在内。也可以写 range(start, stop, step)。
while:条件驱动的重复
attempts = 0
while attempts < 3:
attempts += 1
print(attempts)
循环体必须最终改变条件,否则会无限循环。处理未知长度的输入时,while 很有用;处理已知序列时通常优先 for。
AI 场景
训练循环常用 range(num_epochs),每一轮更新模型并记录 loss。不要在循环中忘记更新计数或清空本轮累积值,否则指标会悄悄错误。
练习
★ 基础
用 range 打印 1 到 5 的平方。
★★ 应用
遍历 loss 列表,统计小于 0.5 的次数。
★★★ 综合
用 while 模拟 loss 每轮乘以 0.8,直到小于 0.1,并打印轮数。
一种可能的实现
```python loss = 1.0 epoch = 0 while loss >= 0.1: loss *= 0.8 epoch += 1 print(epoch, loss) ```D2L 衔接
D2L 的训练代码会把 epoch、batch 和评估步骤组织成嵌套循环。先掌握每个循环的边界和累积变量,再学习下一课的循环工具。
第 08 课 学习进度仅保存在当前浏览器。