Python for AI

模块 2 - 控制流 · 第 09 课

enumerate、zip、break 与 continue

在循环中同时获得索引和数据、配对序列,并有意识地跳过或停止迭代。

enumerate:索引和值一起取

losses = [0.8, 0.6, 0.4]
for epoch, loss in enumerate(losses, start=1):
    print(epoch, loss)

相比 range(len(losses)),enumerate 更直接,也不容易把索引和值写错。

zip:并行遍历

names = ["cat", "dog"]
scores = [0.91, 0.83]
for name, score in zip(names, scores):
    print(f"{name}: {score:.2f}")

zip 会在最短序列结束时停止。需要严格检查长度时,使用 zip(..., strict=True)(Python 3.10+)。

break 与 continue

for score in [0.2, 0.4, 0.95, 0.3]:
    if score >= 0.9:
        break
    if score < 0.3:
        continue
    print(score)

break 结束整个循环,continue 跳过本轮剩余代码。使用它们前先写清楚停止或跳过的理由,避免隐藏流程。

练习

★ 基础

用 enumerate 给三条预测加上从 1 开始的编号。

★★ 应用

用 zip 把样本 ID 和标签组成字典。

★★★ 综合

遍历指标列表,跳过 None,遇到第一个低于零的值立即停止。

一种可能的实现 ```python values = [0.3, None, 0.2, -0.1, 0.4] for value in values: if value is None: continue if value < 0: break print(value) ```

D2L 衔接

数据集代码经常用 zip 配对输入和标签,训练循环用 break 响应早停条件。下一课把简单循环压缩成可读的推导式。

第 09 课 学习进度仅保存在当前浏览器。