Python中enumerate的完全指南

发布时间:2023-05-21

一、基本介绍

enumerate 函数是 Python 内置函数之一,其功能是将一个可迭代对象转换为一个索引序列,同时列出数据和数据下标。

# 代码示例
fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits):
    print(f'第 {index} 个水果是 {fruit}')

在这个例子中,数据列表 fruits 被传递给 enumerate 函数,返回一个包含元素和其相应下标的序列。对于每个元素,我们使用 for 循环打印出它们的下标和对应值。 需要注意的是,索引从 0 开始,而不是从 1 开始。

二、使用 start 参数控制起始索引

您还可以使用 start 参数来控制 enumerate 的起始索引。举个例子:

# 代码示例
fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits, start=1):
    print(f'第 {index} 个水果是 {fruit}')

这里我们使用 start 参数指定起始索引为 1,而不是默认的 0。

三、用 enumerate 生成字典

除了使用循环处理每个元素和其索引之外,enumerate 函数还可以用于快速生成字典。

# 代码示例
fruits = ['apple', 'banana', 'orange']
result = {index: fruit for index, fruit in enumerate(fruits)}
print(result)

这里我们把每个元素和它的索引打包成一个元组,并用字典推导式将它们转换为字典。

四、enumerate 与 zip 的区别

zip 函数是另一个常用的 Python 函数,它的功能是将多个可迭代对象打包成一个元组序列。 那么,怎么区分这两个函数呢?基本的区别在于,enumerate 可以返回元素的索引,而 zip 只能返回元素:

# 代码示例
fruits = ['apple', 'banana', 'orange']
prices = [0.5, 0.25, 0.3]
for fruit, price in zip(fruits, prices):
    print(f'{fruit} 的价格是 {price}')
for index, fruit in enumerate(fruits):
    print(f'第 {index} 个水果是 {fruit}')

这里我们使用 zip 函数将水果和它们的价格打包在一起,并用 for 循环打印出它们。然后在使用 enumerate 函数打印出每个水果的索引。可以看到,zip 函数并没有返回任何索引。

五、enumerate 的局限性

enumerate 函数不适用于所有可迭代对象,例如字典对象。

# 代码示例
my_dict = {'apple': 0.5, 'banana': 0.25, 'orange': 0.3}
for index, fruit in enumerate(my_dict):
    print(f'第 {index} 个水果是 {fruit}')

在这个例子中,我们尝试使用 enumerate 函数来遍历字典对象。但是,我们得到的只是字典的键,而不是值。这是因为字典对象本身并没有顺序。

六、结尾

至此,我们已经对 Python 中的 enumerate 函数有了比较深入的了解。通过这个函数,您可以更轻松地处理可迭代对象,并且使用它可以更方便地生成字典。