当前位置:首页>python>Python 中遍历中的既要又要,enumerate轻松应对

Python 中遍历中的既要又要,enumerate轻松应对

  • 2026-08-25 02:33:07
Python 中遍历中的既要又要,enumerate轻松应对
在我们使用python处理list、元组时,使用for循环进行遍历是常有的事情,当然有时候既需要获取元素的值,又要知道它的索引。这对于大部分送C、Java这类语言转过来的人来说,大概率会使用手动维护计数器,或者通过数组长度来循环。其实python中提供了更好的方案。今天我们就看看python中的enumerate()函数
它的用法很简单,将列表传入函数,它会返回(索引,元素)的配对元组,然后我们直接在for语句中解包这两个值
fruits = ["apple", "banana", "cherry"]# 同时获取索引和元素for i, fruit in enumerate(fruits):    print(f"Index: {i}, Value: {fruit}")
输出结果
Index: 0, Value: appleIndex: 1, Value: bananaIndex: 2, Value: cherry
Python的所以默认从0开始,很多时候我们希望它从1开始,那么只需要给enumerate()加一个start参数
fruits = ["apple", "banana", "cherry"]# 索引从1开始计数for i, fruit in enumerate(fruits, start=1):    print(f"Item {i}: {fruit}")
这种方式是不是比在循环内部写i+1更简单?
虽然enumerate是标准写法,但是在一些老代码中,带索引循环的实现,首先看一个range()+len()的组合,这样是经典的C语言风格,习惯问题:
fruits = ["apple", "banana", "cherry"]for i in range(len(fruits)):    print(f"Index: {i}, Value: {fruits[i]}")

每次循环都要通过fruits[i]索引访问元素,不仅阅读体验差,还更容易出现索引越界的错误。另外一种就是手动维护计数器

fruits = ["apple", "banana", "cherry"]i = 0for fruit in fruits:    print(f"Index: {i}, Value: {fruit}")    i += 1  # 手动自增计数器

在python中我们有了enumerate就可以尝试着替换这种原有的习惯了。enumerate()还能应对更复杂的循环场景,例如组合 zip (),如果想同时遍历两个或者多个列表,还想获取循环索引,只需要将enumerate和zip结合:

names = ["Tanaka", "Sato", "Suzuki"]ages = [25, 30, 28]# 同时遍历两个列表并获取索引for i, (name, age) in enumerate(zip(names, ages)):    print(f"ID: {i}, Name: {name}, Age: {age}")

这里需要注意(name,age)是带了()的,它是显示解包zip()返回的元组。

我们还可以将enumerate()和字典的items()方法结合,实现带索引遍历字典,还能统计处理的键值对数量。

user_scores = {"Tanaka": 80, "Sato": 95, "Suzuki": 60}# 带索引遍历字典键值对for i, (name, score) in enumerate(user_scores.items()):    print(f"User #{i+1}: {name} scored {score}")

总之,掌握enumerate()这一个函数,可以轻松搞定 Python 中所有带索引的循环场景,如果你还是习惯老套路,不妨试试它,相信你会喜欢上它的。

最新文章

随机文章