Python中的enumerate函数 - 返回一个可迭代对象的枚举元素(索引-值对)
发布时间:2023-06-09 10:38:01
Python的enumerate函数是一个非常有用的内置函数,它可以简便地将一个可迭代对象中的每个元素转换成索引-值对。这个函数返回的是一个可迭代的enumerate对象,其中元素是元组(index, value),其中index是从0开始的整数,value是可迭代对象中的值。
使用enumerate函数可以方便地在循环中访问可迭代对象的元素及其索引,而不需要手动创建一个计数器。
这个函数可以帮助我们快速地遍历一个列表或字符串,并同时获取到元素的索引和值。
使用格式:
enumerate(iterable, start=0)
参数说明:
- iterable - 可迭代对象,如列表、字符串、元组等
- start - 开始的索引,默认为0
举个例子:
很多情况下,我们需要遍历一个列表,同时得到索引和元素,一般的代码如下:
fruits = ["apple", "banana", "orange"]
for i in range(len(fruits)):
print(i, fruits[i])
这个代码有点冗长,也不太Pythonic。使用enumerate函数可以更为简洁:
fruits = ["apple", "banana", "orange"]
for i, fruit in enumerate(fruits):
print(i, fruit)
输出结果:
0 apple 1 banana 2 orange
我们可以看到,使用enumerate函数可以让代码更加简洁,同时也更容易理解。
当然,除了可以遍历列表,enumerate函数也可以遍历其他可迭代对象,如字符串、元组等。比如:
string = "Hello, world!"
for i, s in enumerate(string):
print(i, s)
输出结果:
0 H 1 e 2 l 3 l 4 o 5 , 6 7 w 8 o 9 r 10 l 11 d 12 !
使用enumerate函数可以遍历对象时,特别要注意迭代器已经迭代完的情况。要正确使用enumerate,必须知道每个元素的位置(而位置是通过enumerate获得的),因此,如果可迭代的对象被改变,enumerate将生成不一致的结果。
因此,建议enumerate只用于不可变的(无序)序列或在迭代中不改变序列的情况下使用。如果需要动态地增加或删除序列中的元素,应该使用while循环和索引进行操作。
