Python 基础详解:enumerate() 函数
文章目录
- 请添加图片描述
- 一、`enumerate()` 是什么?
- 二、基本语法
- 三、基本用法示例
- 四、自定义起始索引
- 五、`enumerate()` 的底层原理
- 六、与普通循环的对比
- 七、结合条件语句的高级用法
- 八、与其他可迭代对象一起使用
- 遍历字符串:
- 遍历字典的键:
- 九、将枚举对象转换为列表或字典
- 📚 参考资料
一、enumerate() 是什么?
emurate /ɪˈnjuːməreɪt/
中文名即为枚举
日常 Python 编程中,我们经常需要在遍历列表、元组或字符串时,同时获取元素的索引和值。
如果你曾这样写过代码👇:
index = 0
for value in ['a', 'b', 'c']:print(index, value)index += 1
那恭喜你,是时候认识一个更优雅的 Python 内置函数——enumerate() 🎯。
enumerate() 是 Python 的内置函数,用于在 遍历可迭代对象时自动计数。
它返回一个 枚举对象(enumerate object),其中每个元素是一个 (index, value) 元组。
二、基本语法
enumerate(iterable, start=0)
参数说明:
iterable:可迭代对象(如列表、元组、字符串等)start:索引的起始值(默认从 0 开始)
返回值:
- 一个可迭代的
enumerate对象
三、基本用法示例
fruits = ['apple', 'banana', 'cherry']for index, fruit in enumerate(fruits):print(index, fruit)
输出:
0 apple
1 banana
2 cherry
可以看到,enumerate() 自动为我们生成了索引。
四、自定义起始索引
有时候我们不希望从 0 开始计数,比如行号通常从 1 开始。
可以使用 start 参数来自定义:
for index, fruit in enumerate(fruits, start=1):print(f"第{index}个水果是 {fruit}")
输出:
第1个水果是 apple
第2个水果是 banana
第3个水果是 cherry
五、enumerate() 的底层原理
enumerate() 实际上等价于下面这种写法:
def my_enumerate(iterable, start=0):n = startfor elem in iterable:yield n, elemn += 1
它返回的是一个生成器(iterator),在循环中逐步生成索引和值,因此不会占用额外的内存。
六、与普通循环的对比
| 功能 | 普通循环 | 使用 enumerate() |
|---|---|---|
| 需要手动维护索引 | ✅ 是 | ❌ 否 |
| 可读性 | 一般 | 更高 |
| 内存占用 | 相似 | 相似 |
| 推荐使用 | ❌ 不推荐 | ✅ 推荐 |
示例对比:
# 传统写法
for i in range(len(fruits)):print(i, fruits[i])# enumerate 写法(更简洁)
for i, fruit in enumerate(fruits):print(i, fruit)
下次你再需要索引和元素同时出现时,
记得:
不要再用
range(len(...)),直接用enumerate()
七、结合条件语句的高级用法
enumerate() 常常与条件判断搭配使用,用来查找特定元素的位置。
nums = [10, 20, 30, 40, 50]for i, num in enumerate(nums):if num == 30:print(f"找到了 30,在索引 {i}")
输出:
找到了 30,在索引 2
八、与其他可迭代对象一起使用
enumerate() 不仅能用于列表,也能用于 字符串、元组、集合、字典(遍历 key 或 value) 等。
遍历字符串:
for i, ch in enumerate("Python"):print(i, ch)
输出:
0 P
1 y
2 t
3 h
4 o
5 n
遍历字典的键:
data = {'a': 1, 'b': 2, 'c': 3}for i, key in enumerate(data):print(i, key, data[key])
输出:
0 a 1
1 b 2
2 c 3
九、将枚举对象转换为列表或字典
enumerate() 返回的是一个枚举对象,我们可以直接转换为其他类型。
fruits = ['apple', 'banana', 'cherry']# 转换为列表
print(list(enumerate(fruits)))
# [(0, 'apple'), (1, 'banana'), (2, 'cherry')]# 转换为字典
print(dict(enumerate(fruits, start=1)))
# {1: 'apple', 2: 'banana', 3: 'cherry'}
这在数据映射或索引管理时非常实用。
📚 参考资料
- Python 官方文档 – enumerate()

- Real Python 教程:Looping Techniques

