Python是一种高级编程语言,具有优雅,简洁,易读的特点,其对迭代器和生成器的支持非常好,极大地方便了程序员的开发。在Python中,有一个非常重要的函数——enumerate函数,它可以让我们在遍历列表、字符串等可迭代对象时获得元素的下标和值,这样可以让我们更加方便的进行处理。
一、常规使用
lst = ['apple', 'banana', 'pear']
for index, value in enumerate(lst):
print(index, value)
在这个例子中,我们定义了一个列表lst,然后用for循环遍历这个列表,使用enumerate函数获取到每一个元素的下标和值。在下面的输出结果中,我们可以看到,enumerate函数给每个元素都加了一个下标,从0开始依次增加。可以发现,使用这个函数,我们得到的元素是一个元组,第一个元素是原来的下标,第二个元素是原来的值。在实际使用中,我们可以根据需求来选择只使用下标或只使用值。
输出结果:
0 apple
1 banana
2 pear
二、使用start参数
lst = ['apple', 'banana', 'pear']
for index, value in enumerate(lst, start=1):
print(index, value)
在这个例子中,我们传入了另一个参数start,这个参数的作用是指定枚举的起始值,即原来的下标从start开始递增。上面的例子中,start=1,所以下标从1开始递增。这种用法在有些情况下非常有用,比如说打印排名时以1开始递增。
输出结果:
1 apple
2 banana
3 pear
三、使用enumerate函数转换字典
lst = ['apple', 'banana', 'pear']
dct = dict(enumerate(lst))
print(dct)
在这个例子中,我们使用了dict函数将一个可迭代对象转换成一个字典。其中,enumerate函数返回的是一个可迭代的对象,每次迭代都会返回一个元组,元组的第一个元素是原来的下标,第二个元素是原来的值。因此,通过dict函数,我们可以将这个可迭代对象的元素全部转换为键值对,创建一个字典。
输出结果:
{0: 'apple', 1: 'banana', 2: 'pear'}
四、使用enumerate函数扩展列表
lst = ['apple', 'banana', 'pear']
lst2 = ['orange', 'watermelon', 'grape']
for index, value in enumerate(lst):
lst[index] = value + ' ' + lst2[index]
print(lst)
在这个例子中,我们定义了两个列表lst和lst2,我们希望将这两个列表对应的元素合并成一个新的列表。使用enumerate函数,我们可以获得每一个元素的下标和值,然后在lst中修改每一个元素,将lst2中对应的元素加到lst中。
输出结果:
['apple orange', 'banana watermelon', 'pear grape']
五、使用enumerate函数与zip函数结合使用
lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]
for i, (x, y) in enumerate(zip(lst1, lst2)):
print(i, (x, y))
在这个例子中,我们结合使用了enumerate函数和zip函数。zip函数会将两个可迭代对象中对应位置的元素打包成一个元组,然后返回一个可迭代的zip对象,我们可以用for循环遍历这个zip对象。在这个例子中,我们使用enumerate函数获取到每一个元素的下标和值,使用zip函数将两个列表对应的元素打包成元组,然后在for循环中遍历这个zip对象,获取每一个元组,在元组中我们用x和y来分别表示lst1和lst2中对应位置的元素,输出i和元组即可。
输出结果:
0 ('a', 1)
1 ('b', 2)
2 ('c', 3)
六、总结
enumerate函数是Python中一个非常常用的函数,它可以让我们在遍历列表、字符串等可迭代对象时获得元素的下标和值,这样可以让我们更加方便的进行处理。在使用enumerate函数时,我们可以传入start参数来指定枚举的起始值,使用enumerate函数和zip函数结合也是我们常用的一种技巧。除此之外,我们还可以使用enumerate函数来扩展列表或者将可迭代对象转换成字典,极大地方便了我们的开发工作。