您的位置:

Python工程师必知:利用enumerate实现序列迭代

一、enumerate是什么?

在Python中,我们经常需要遍历一个列表或者元组,此时我们会使用for循环,如:

colors = ['red', 'green', 'blue']

for i in range(len(colors)):
    print(i, colors[i])

此时,在for循环中需要通过range(len(colors))来获取colors列表的每一个元素,再通过colors[i]的方式来获取特定元素。虽然这样也能访问到列表的每个元素,但是代码显得冗余和不够简洁。

此时,Python提供了一个非常有用的工具:enumerate函数,它可以同时返回每个元素的索引和值,避免了在代码中使用range和下标的操作,使得代码更加简单优美。示例代码如下所示:

colors = ['red', 'green', 'blue']

for index, value in enumerate(colors):
    print(index, value)

输出结果如下:

0 red
1 green
2 blue

可以看到,使用enumerate可以直接获取列表的元素和序号,而不需要使用range和下标的操作。

二、如何使用enumerate?

enumerate()函数的参数很简单,一个可迭代对象,一个指定索引起始位置的整数。其具体的参数形式如下:

enumerate(sequence, start=0)

例如:

fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits, start=1):
    print(index, fruit)

执行结果如下:

1 apple
2 banana
3 orange

可以看到,我们通过指定start参数,从1开始索引,而不是默认的0。

三、enumerate的返回值

enumerate()的返回值是一个可迭代的对象,每个元素是一个元组,元组的第一个元素是索引,第二个元素是原序列的元素。示例如下:

fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits):
    print((index, fruit))

执行结果如下:

(0, 'apple')
(1, 'banana')
(2, 'orange')

另外,返回值也可以通过list()转化为列表,示例如下:

fruits = ['apple', 'banana', 'orange']
print(list(enumerate(fruits)))

输出结果如下:

[(0, 'apple'), (1, 'banana'), (2, 'orange')]

四、enumerate的使用场景

enumerate()函数在以下三方面特别有用:

第1)、同时获取索引和元素

在进行遍历列表等可迭代对象的时候,我们经常需要同时获得当前元素和它的索引。借助enumerate()函数,我们可以轻易地同时获取两个值,而无需在代码中使用索引来访问列表元素。

第2)、Forelase结构中,使用enumerate构建字典

有时候,在进行迭代过程中,我们需要将序列中的元素作为键,索引作为值,以便于后续的操作。借助enumerate()函数,我们可以快速构建一个字典。

fruits = ['apple', 'banana', 'orange']
dict_fruits = {fruit:index for index, fruit in enumerate(fruits)}
print(dict_fruits)

输出结果如下:

{'apple': 0, 'banana': 1, 'orange': 2}

可以看到,我们通过一个字典推导式,快速的构建出字典。

第3)、删除可迭代对象中的指定元素

使用enumerate()函数时,同时可以还可以比较方便的删除某些特定的元素,示例代码如下:

fruits = ['apple', 'banana', 'orange']

for index, fruit in enumerate(fruits):
    if index == 1:
        del fruits[index]

print(fruits)

输出结果如下:

['apple', 'orange']

可以看到,当我们删除索引为1的元素时,这里使用enumerate()函数的值恰好也是1。

五、总结

本文主要讲解了enumerate()函数的使用方法,从如何使用到返回值和使用场景都有所涉及。enumerate()函数是Python中非常好用的一个内置函数,希望大家能够善加利用。