跳到主要内容

enumerate 与 zip

enumerate() 在遍历时同时获取索引和值,zip() 并行配对多个列表。

enumerate​

tasks = ["编译", "测试", "打包"]

# 默认索引从 0 开始,业务编号从 1 开始时用 start=1
for index, task in enumerate(tasks, start=1):
print(f"任务 {index}: {task}")

# 任务 1: 编译
# 任务 2: 测试
# 任务 3: 打包

zip​

statuses = ["success", "failed", "success"]

for task, status in zip(tasks, statuses):
print(f"{task}: {status}")

# 编译: success
# 测试: failed
# 打包: success

长度不同时,zip() 在较短的列表处截断,不报错;必须长度一致时可用 zip(..., strict=True)(Python 3.10+)。

enumerate 结合 zip​

for index, (task, status) in enumerate(zip(tasks, statuses), start=1):
print(f"{index}. {task}: {status}")

# 1. 编译: success
# 2. 测试: failed
# 3. 打包: success

zip() 先把任务和状态配成一组,enumerate() 再给每组加上编号。

统计失败任务​

failed_tasks = [
task
for task, status in zip(tasks, statuses)
if status == "failed"
]

print(failed_tasks) # ['测试']

如果任务与状态来自不同数据源,需确认顺序一致,否则状态可能配错任务。