在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(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()的返回值是一个可迭代的对象,每个元素是一个元组,元组的第一个元素是索引,第二个元素是原序列的元素。示例如下:
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()函数,我们可以轻易地同时获取两个值,而无需在代码中使用索引来访问列表元素。
有时候,在进行迭代过程中,我们需要将序列中的元素作为键,索引作为值,以便于后续的操作。借助enumerate()函数,我们可以快速构建一个字典。
fruits = ['apple', 'banana', 'orange'] dict_fruits = {fruit:index for index, fruit in enumerate(fruits)} print(dict_fruits)
输出结果如下:
{'apple': 0, 'banana': 1, 'orange': 2}
可以看到,我们通过一个字典推导式,快速的构建出字典。
使用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中非常好用的一个内置函数,希望大家能够善加利用。
标签: 源码