Python 的 for 循环中如何同时获取索引和元素?
用 enumerate():for i, item in enumerate(items) 同时拿到下标与元素,start 参数可改起始值。避免 range(len()) 的写法。本文给出示例与常见变体。
用内置函数 enumerate():for i, item in enumerate(items)——i 是下标、item 是元素;enumerate(items, start=1) 可从 1 开始计数。
标准用法
fruits = ['apple', 'banana', 'cherry']
for i, fruit in enumerate(fruits):
print(i, fruit)
# 0 apple / 1 banana / 2 cherry
for i, fruit in enumerate(fruits, start=1): # 从 1 开始
print(i, fruit)
反例与正例
# ❌ 不推荐:先取长度再按下标取
for i in range(len(fruits)):
print(i, fruits[i])
# ✅ 推荐:enumerate 直接解包
for i, fruit in enumerate(fruits): ...
相关技巧
# 只要序号计数:直接用 enumerate 而不是手动维护计数器
# 同时遍历两个列表:zip
for a, b in zip(names, scores): ...
# 三个都要:enumerate + zip 组合
for i, (a, b) in enumerate(zip(names, scores)): ...
常见问题(FAQ)
Q:enumerate 返回的是什么? 惰性迭代器,不占额外内存;list(enumerate(x)) 可得到 (index, value) 元组列表。
Q:字典能用 enumerate 吗? 可以但语义是"第几个键";遍历键值用 dict.items()。