千锋教育-做有情怀、有良心、有品质的职业教育机构

Python里的enumerate()函数是一个非常有用的函数,它可以帮助我们在遍历列表、元组、字符串等可迭代对象时,同时获取每个元素的索引和值。使用enumerate()函数可以让我们的代码更加简洁、优雅。

enumerate()函数的基本用法非常简单,我们只需要在需要遍历的可迭代对象前面加上enumerate()函数即可,例如:
_x000D_`python
_x000D_fruits = ['apple', 'banana', 'orange']
_x000D_for index, fruit in enumerate(fruits):
_x000D_print(index, fruit)
_x000D_ _x000D_上面的代码会输出:
_x000D_ _x000D_0 apple
_x000D_1 banana
_x000D_2 orange
_x000D_ _x000D_在这个例子中,我们使用了for循环来遍历fruits列表,并使用enumerate()函数获取每个元素的索引和值。在每次循环中,index变量会保存当前元素的索引,fruit变量会保存当前元素的值。
_x000D_除了在for循环中使用,enumerate()函数还可以将可迭代对象转换成一个枚举对象,这个枚举对象包含了每个元素的索引和值。例如:
_x000D_`python
_x000D_fruits = ['apple', 'banana', 'orange']
_x000D_enum_fruits = enumerate(fruits)
_x000D_print(list(enum_fruits))
_x000D_ _x000D_上面的代码会输出:
_x000D_ _x000D_[(0, 'apple'), (1, 'banana'), (2, 'orange')]
_x000D_ _x000D_在这个例子中,我们使用enumerate()函数将fruits列表转换成了一个枚举对象,并使用list()函数将枚举对象转换成了一个列表。这个列表包含了每个元素的索引和值,以元组的形式保存。
_x000D_除了基本用法外,enumerate()函数还有一些高级用法,下面我们来详细介绍一下。
_x000D_## 扩展用法一:指定起始索引
_x000D_在默认情况下,enumerate()函数的起始索引是0,但是我们也可以通过指定start参数来设置起始索引。例如:
_x000D_`python
_x000D_fruits = ['apple', 'banana', 'orange']
_x000D_for index, fruit in enumerate(fruits, start=1):
_x000D_print(index, fruit)
_x000D_ _x000D_上面的代码会输出:
_x000D_ _x000D_1 apple
_x000D_2 banana
_x000D_3 orange
_x000D_ _x000D_在这个例子中,我们使用了start参数来将起始索引设置为1,这样输出的索引就从1开始了。
_x000D_## 扩展用法二:反向遍历
_x000D_有时候我们需要从后往前遍历一个列表或元组,这时候可以使用reversed()函数来反转可迭代对象,再使用enumerate()函数进行遍历。例如:
_x000D_`python
_x000D_fruits = ['apple', 'banana', 'orange']
_x000D_for index, fruit in enumerate(reversed(fruits)):
_x000D_print(index, fruit)
_x000D_ _x000D_上面的代码会输出:
_x000D_ _x000D_0 orange
_x000D_1 banana
_x000D_2 apple
_x000D_ _x000D_在这个例子中,我们使用了reversed()函数将fruits列表反转,再使用enumerate()函数从后往前遍历。
_x000D_## 扩展用法三:同时遍历多个可迭代对象
_x000D_有时候我们需要同时遍历多个可迭代对象,这时候可以使用zip()函数将它们打包成一个元组,再使用enumerate()函数进行遍历。例如:
_x000D_`python
_x000D_fruits = ['apple', 'banana', 'orange']
_x000D_prices = [3.5, 2.8, 4.2]
_x000D_for index, (fruit, price) in enumerate(zip(fruits, prices)):
_x000D_print(index, fruit, price)
_x000D_ _x000D_上面的代码会输出:
_x000D_ _x000D_0 apple 3.5
_x000D_1 banana 2.8
_x000D_2 orange 4.2
_x000D_ _x000D_在这个例子中,我们使用了zip()函数将fruits列表和prices列表打包成了一个元组,再使用enumerate()函数进行遍历。在每次循环中,(fruit, price)变量会保存当前元组,包含了当前索引的水果名称和价格。
_x000D_## 扩展用法四:同时遍历和修改列表
_x000D_有时候我们需要同时遍历和修改一个列表,这时候可以使用enumerate()函数获取每个元素的索引,再使用索引来修改列表中的元素。例如:
_x000D_`python
_x000D_fruits = ['apple', 'banana', 'orange']
_x000D_for index, fruit in enumerate(fruits):
_x000D_fruits[index] = fruit.upper()
_x000D_print(fruits)
_x000D_ _x000D_上面的代码会输出:
_x000D_ _x000D_['APPLE', 'BANANA', 'ORANGE']
_x000D_ _x000D_在这个例子中,我们使用了for循环和enumerate()函数遍历fruits列表,并使用索引来修改每个元素的值。在每次循环中,index变量会保存当前元素的索引,fruit变量会保存当前元素的值,我们使用fruits[index] = fruit.upper()来将当前元素的值转换成大写字母,并将修改后的值赋回到列表中。
_x000D_## Q&A
_x000D_1. enumerate()函数的返回值是什么?
_x000D_enumerate()函数返回一个枚举对象,包含了每个元素的索引和值。
_x000D_2. enumerate()函数的默认起始索引是多少?
_x000D_enumerate()函数的默认起始索引是0。
_x000D_3. 如何指定enumerate()函数的起始索引?
_x000D_我们可以使用start参数来指定enumerate()函数的起始索引,例如:enumerate(fruits, start=1)。
_x000D_4. 如何反向遍历一个列表?
_x000D_我们可以使用reversed()函数将列表反转,再使用enumerate()函数进行遍历,例如:enumerate(reversed(fruits))。
_x000D_5. 如何同时遍历多个可迭代对象?
_x000D_我们可以使用zip()函数将它们打包成一个元组,再使用enumerate()函数进行遍历,例如:enumerate(zip(fruits, prices))。
_x000D_6. 如何同时遍历和修改一个列表?
_x000D_我们可以使用enumerate()函数获取每个元素的索引,再使用索引来修改列表中的元素,例如:fruits[index] = fruit.upper()。
_x000D_
上一篇
python遍历每一行
相关推荐