Python中的enumerate函数是用来干什么的?
Python中的enumerate函数是用来将一个可迭代的对象(如列表、元组、字符串、字典等)中的元素和其对应的下标组成一个可迭代的对象,以便于对一个序列进行循环时,在循环中同时获得元素的值与其对应的索引。
语法:
enumerate(sequence, start=0)
该函数包含两个参数:
sequence:表示要迭代的序列对象,比如列表、元组、字符串等等。
start:表示从哪个位置开始迭代,默认从0开始。
返回值:返回的是一个enumerate对象,其中每个元素都是一个二元组,元组 个元素是序列的索引,第二个元素是对应的元素。
举例说明:
# 枚举列表
list_1 = [7, 2, 3, 5, 4]
for i, j in enumerate(list_1):
print(i, j)
# 枚举元组
tup1 = (5, 6, 7, 8, 9)
for i, j in enumerate(tup1, 1):
print(i, j)
# 枚举字符串
string1 = "Hello"
for index, value in enumerate(string1):
print(index, value)
输出结果:
0 7 1 2 2 3 3 5 4 4 1 5 2 6 3 7 4 8 5 9 0 H 1 e 2 l 3 l 4 o
我们可以看到,当我们使用enumerate函数迭代一个列表、元组或是字符串的时候,它会返回一个元素和索引配对的二元组。这个特性让代码更加便捷,也可以有效地去简化代码。
enumerate函数还有一个非常实用的功能,就是可以让我们同时在循环中对一个序列进行遍历和修改。例如,我们可以用enumerate函数在对一个列表进行循环时,同时获得元素的值和索引,并且根据索引修改特定元素的值:
# 改变列表元素的值
list_2 = [1, 2, 3, 4, 5]
for i, j in enumerate(list_2):
if i == 2:
list_2[i] = 100
print(list_2)
输出结果:
[1, 2, 100, 4, 5]
上面的例子中,我们使用enumerate函数遍历列表元素和索引,在索引值为2的位置将原本的3值替换为100。
除此之外,enumerate函数还可以和其它Python内置的函数一同使用,比如sorted()函数:
# 使用sorted()函数和enumerate函数枚举列表中排序后的元素
list_3 = [3, 2, 7, 4, 1]
for i, j in enumerate(sorted(list_3)):
print(i, j)
输出结果:
0 1 1 2 2 3 3 4 4 7
最后,需要注意的是,由于enumerate函数返回的是一个生成器对象,它并不是一个可以直接打印出来的列表,所以如果需要查看枚举后的结果,需要将它先转换成一个列表或其它数据类型。例如,我们可以通过将enumerate对象转换成列表来查看完整的结果:
tup2 = ("Bob", "Jim", "Kate", "Lucy")
print(list(enumerate(tup2)))
输出结果:
[(0, 'Bob'), (1, 'Jim'), (2, 'Kate'), (3, 'Lucy')]
总结一下,enumerate函数可以将一个可迭代的对象中的元素与其对应的索引组成一个可迭代的二元组对象,以便于对一个序列进行循环时,同时获得元素的值与其对应的索引,并且可以让我们在循环中对序列进行遍历和修改,是一种非常常用的Python内置函数。
