您的位置:

Python技巧:利用enumerate函数遍历并追踪序列中元素的索引

一、什么是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() 函数,我们可以轻松地打印出代码运行的进度,或以更可读的方式遍历复杂的数据结构,例如字典。