精通 Python enumerate():为列表、元组、字符串、字典带索引循环
精通 Python enumerate():为列表、元组、字符串、字典带索引循环
什么是 Python enumerate?
enumerate() 是 Python 内置函数,为任何可迭代对象添加计数器,返回 (index, value) 元组的迭代器。根据官方 Python 文档,该函数提供简洁高效的方式在迭代时同时获取位置和元素。
核心要点
- 理解
enumerate()的语法和参数。 - 学习如何设置自定义起始索引。
- 将
enumerate()应用于列表、元组、字符串和字典。 - 认识其相对于手动索引的性能优势。
语法
enumerate(iterable, start=0)
参数
iterable:支持迭代的任意对象。start(可选):计数器初始值,默认 0。
返回值
产出 (index, element) 形式的迭代器,index 从 start 开始,每元素递增 1。
使用 enumerate() – 基础示例
下面简单演示。将列表 my_list 传给 enumerate(),并将结果迭代器转为列表显示。
my_list = ['A', 'B', 'C', 'D'] print(list(enumerate(my_list)))
输出:
[(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D')]
自定义起始索引
提供 start 参数可偏移编号:
my_list = ['A', 'B', 'C', 'D'] print(list(enumerate(my_list, 2)))
输出:
[(2, 'A'), (3, 'B'), (4, 'C'), (5, 'D')]
配合 enumerate() 循环
在 for 循环中使用 enumerate() 代码整洁,无需单独计数器变量。
my_list = ['A', 'B', 'C', 'D']
for index, value in enumerate(my_list):
print(index, value)
print("---")
for index, value in enumerate(my_list, 10):
print(index, value)
输出:
0 A 1 B 2 C 3 D --- 10 A 11 B 12 C 13 D
枚举元组
元组同理:
my_tuple = ('A', 'B', 'C', 'D', 'E')
for index, value in enumerate(my_tuple):
print(index, value)
输出:
0 A 1 B 2 C 3 D 4 E
枚举字符串
字符串在 Python 中可迭代,enumerate() 可揭示每字符位置:
my_str = "Guru99"
for index, char in enumerate(my_str):
print(index, char)
输出:
0 G 1 u 2 r 3 u 4 9 5 9
枚举字典
传字典给 enumerate() 时,迭代其键:
my_dict = {"a": "PHP", "b": "JAVA", "c": "PYTHON", "d": "NODEJS"}
for index, key in enumerate(my_dict):
print(index, key)
输出:
0 a 1 b 2 c 3 d
为什么用 enumerate()?
- 单一、可读的表达式同时获得索引和值。
- 循环中调用
list.index()每次 O(n) 查找,而enumerate()每次迭代 O(1),大幅提升大集合性能。 - 减少样板代码,增强可维护性,减少 bug。
总结
enumerate()是 Python 核心特性,将索引与可迭代元素配对。- 接受可选
start参数自定义编号。 - 适用于列表、元组、字符串、字典及任何可迭代对象。
- 提供单遍历、高效的索引感知循环方案。
- 遵循官方文档获取最准确、最新的用法细节。
Python
- 精通Python函数参数:位置、关键字与默认参数
- Python Lambda匿名函数实战指南
- Python 生成器:高效迭代与进阶用例
- Python 闭包详解:嵌套函数如何捕获变量
- 精通 Python 装饰器:专家技巧增强函数
- Python 循环完全指南:for、while、break、continue、enumerate 详解
- Python strip() 方法完全指南:去除首尾空白与自定义字符实战
- Python str.count() 完全指南:统计字符与子串出现次数实战
- Python len() 函数实战指南:测量字符串、列表、元组、字典等对象长度
- 精通 Python range() 函数:从基础到高级用法
- 精通 Python yield:生成器 vs return 实战指南
- 精通 Python enumerate():为列表、元组、字符串、字典带索引循环