Python中的enumerate()函数:同时获取列表或可迭代对象的索引和对应元素值
在 Python 中,我们经常会遇到需要在遍历列表或可迭代对象时同时获取元素值和索引的情况。这时候,就可以使用 Python 内建函数 enumerate()。enumerate() 函数能够将一个列表或可迭代对象转化为一个枚举对象(enumerate object),其中每个元素都是一个元组 (index, value),index 表示元素在序列中的索引,value 表示该元素的值。
enumerate() 函数的语法如下:
enumerate(iterable, start=0)
其中,iterable 是要转化为枚举对象的列表或可迭代对象,start 是可选参数,表示枚举对象下标从 start 开始。默认情况下,下标从 0 开始。
下面来看几个使用 enumerate() 函数的例子。
## 例子 1:使用 enumerate() 遍历列表
假设有一个列表 lst,我们想依次输出它的每个元素和它在列表中的索引,可以这样写代码:
lst = ["apple", "banana", "cherry"]
for i, item in enumerate(lst):
print(i, item)
输出结果如下:
0 apple 1 banana 2 cherry
这里,我们使用了两个变量 i 和 item 分别存储元组中的索引和元素值。在循环中,i 和 item 会依次为枚举对象的每个元素赋值。
## 例子 2:使用 enumerate() 实现元素值替换
有时候,我们需要在遍历列表时修改它的元素值。这时候,就可以使用 enumerate() 函数来获取元素的索引并进行修改。下面是一个例子,假设我们有一个列表 lst,其中的 0 值需要被替换成 1:
lst = [0, 2, 4, 6, 8]
for i, val in enumerate(lst):
if val == 0:
lst[i] = 1
print(lst)
输出结果如下:
[1, 2, 4, 6, 8]
这里我们先用 enumerate() 遍历 lst,对于每个元素,如果其值为 0,则将其替换为 1。
## 例子 3:使用 enumerate() 实现元素出现次数统计
有时候,我们需要统计列表中每个元素出现的次数。这时候,我们需要用到 Python 内建函数 dict(),并结合 enumerate() 函数来实现。下面是一个例子,假设我们有一个列表 lst,需要统计其中每个元素出现的次数:
from collections import defaultdict
lst = ["apple", "banana", "cherry", "banana", "apple"]
counter = defaultdict(int)
for i, item in enumerate(lst):
counter[item] += 1
print(dict(counter))
输出结果如下:
{'apple': 2, 'banana': 2, 'cherry': 1}
这里我们用 defaultdict() 函数定义了一个空的字典 counter,每当遇到一个新元素时,就将其添加到字典中,并将计数器初始化为 0。然后,我们使用 enumerate() 遍历 lst,对于每个元素,都将其对应的计数器加一。最后,使用 dict() 函数将字典转化为 Python 字典,并输出结果。
总结
在 Python 中,使用 enumerate() 函数可以方便地遍历列表或可迭代对象,同时获取元素值和索引。这能够大大简化代码逻辑,提高代码效率。同时,借助 enumerate() 函数,还可以快速修改列表中的元素,或统计列表中每个元素出现的次数。
