enumerate()是Python中用于同时获取可迭代对象索引和元素的内置函数,返回枚举对象,支持start参数自定义起始索引,常用于for循环解包,不支持索引访问,比range(len())更简洁安全。

在 Python 中,enumerate() 是专门用来解决“既要遍历元素、又要拿到下标”的常见需求的内置函数,它比手动用 range(len(...)) 或维护计数器更简洁、安全、符合 Python 风格。
enumerate() 的基本用法
enumerate() 接收一个可迭代对象(如列表、元组、字符串等),返回一个枚举对象,每次迭代产生一个包含两个元素的元组:索引(默认从 0 开始)和对应元素。通常配合 for 循环和解包使用:
- 直接解包为两个变量:例如
for i, item in enumerate(items): - 索引是整数,从 0 开始;也可通过
start参数自定义起始值,如enumerate(items, start=1)用于生成 1-based 编号
实际例子:遍历列表并打印带序号的内容
比如有一个水果列表:
fruits = ['apple', 'banana', 'cherry']想输出 “1. apple”、“2. banana”、“3. cherry”,可以这样写:
立即学习“Python免费学习笔记(深入)”;
for i, fruit in enumerate(fruits, start=1):print(f"{i}. {fruit}")
输出结果就是:
1. apple
2. banana
3. cherry
常见误区与注意事项
-
enumerate()返回的是枚举对象,不是列表;若需多次遍历或查看全部内容,可转成 list,如list(enumerate(fruits)) - 不要试图对枚举对象做索引操作(如
enum_obj[0]),它不支持随机访问 - 避免混用
range(len(...))和enumerate()—— 后者更直观、不易出错,也更高效 - 对字典调用
enumerate(dict)时,枚举的是键的索引,不是键值对;如需遍历键值对,请用dict.items()
进阶技巧:嵌套结构中结合 enumerate 使用
比如处理二维列表(矩阵)时,可以嵌套使用:
matrix = [[1, 2], [3, 4], [5, 6]]for i, row in enumerate(matrix):
for j, value in enumerate(row):
print(f"matrix[{i}][{j}] = {value}")
这样就能清晰获得每个元素的行列坐标,无需手动管理双重计数器。


















