一、什么是enumerate函数
在 Python 中,有时我们需要遍历列表或其他可迭代对象,并在同一时间获取当前元素的索引。通常,我们会使用 for 循环和 range 函数,但这种方法不太方便。为了解决这个问题,Python 提供了 enumerate() 函数。
enumerate() 函数将一个可迭代对象转换为枚举器,每个枚举器元素由一对元组 (index, value) 组成,其中 index 是元素的索引,value 是元素的值。下面是如何使用枚举器的示例:
lst = ['apple', 'banana', 'orange'] for index, value in enumerate(lst): print(index, value)
输出:
0 apple 1 banana 2 orange
在上面的示例中,我们将列表 lst 转换为枚举器,并使用 for 循环遍历该枚举器。使用元组解包,在每一次迭代中,我们可以得到当前元素的索引和值。
二、使用enumerate追踪代码执行进度
我们经常需要追踪长时间运行的代码的执行进度。使用 enumerate() 函数,我们可以轻松地打印出当前代码运行的进度。
在下面的示例中,我们使用 Python 内置函数 time.sleep() 模拟较长时间的运行时间。然后,使用一个简单的循环和 enumerate() 函数,我们在每一轮循环中打印出代码运行的进度。
import time for i, item in enumerate(range(100)): time.sleep(0.1) print(f"Percentage complete: {(i + 1) / 100 * 100:.2f}%")
输出:
Percentage complete: 1.00% Percentage complete: 2.00% Percentage complete: 3.00% ... ... Percentage complete: 98.00% Percentage complete: 99.00% Percentage complete: 100.00%
在上面的示例中,我们首先使用 range() 函数生成一个包含 100 个元素的列表。然后,在 for 循环中,我们使用 time.sleep() 函数暂停 0.1 秒,以模拟代码的运行时间。每一次循环,我们都使用 enumerate() 函数得到一个包含当前索引和元素的元组,然后打印出代码运行的进度。
三、用enumerate优化字典元素的遍历
当我们使用字典时,有时需要遍历其元素。虽然我们可以使用 for 循环和 items() 方法遍历字典元素,但使用 enumerate() 函数可以更方便地追踪当前元素的索引。
在下面的示例中,我们使用一个简单的字典,其中包含几个不同颜色的水果的名称和数量。然后,我们使用 for 循环和 enumerate() 函数遍历字典的元素,同时追踪当前元素的索引。
fruits = {'apple': 3, 'banana': 4, 'orange': 2} for i, (key, value) in enumerate(fruits.items()): print(f"#{i + 1}. {key.capitalize()}: {value}")
输出:
#1. Apple: 3 #2. Banana: 4 #3. Orange: 2
在上面的示例中,我们使用 items() 方法将字典的键值对分别提取并遍历。使用 for 循环,我们获得了一个每一次循环包含键值对元组的生成器。
然后,我们使用 enumerate() 函数遍历生成器的元素,并打印出当前元素的键和值。我们还使用 capitalize() 方法将水果的名称的首字母大写,以使输出更加美观。
四、结论
在 Python 中,enumerate() 函数提供了一种方便的方法来遍历并追踪序列中元素的索引。使用 enumerate() 函数,我们可以轻松地打印出代码运行的进度,或以更可读的方式遍历复杂的数据结构,例如字典。