欢迎访问宙启技术站
智能推送

python中如何使用enumerate()函数?

发布时间:2023-05-24 13:18:30

enumerate()函数是Python内置函数之一,它常常被用来遍历序列,同时返回序列中元素的索引值和对应的元素本身。而在某些情况下,直接遍历序列可能无法满足我们的需求,我们需要同时获取到序列元素的索引值,那么如何在Python中使用更优雅的方式来遍历序列并获取到元素的索引值呢?

下面来详细介绍一下enumerate()函数的用法以及在Python中如何使用。

一、使用enumerate()函数

enumerate()函数用法比较简单,它的基本形式如下:

enumerate(sequence, [start=0])

其中,sequence表示要遍历的序列,可以是元组、列表、字符串、字典、集合等迭代器,start表示开始的索引,一般默认为0。函数返回一个enumerate对象,该对象是可迭代的,其中每个元素都是一个元组,第1个元素是从start开始表示元素所在的索引值,第2个元素是对应的元素本身。

例如:

words = ['hello', 'world', 'python']
for index, word in enumerate(words):
    print(index, word)

输出结果:

0 hello
1 world
2 python

二、参数控制

当我们遍历一个序列时,enumerate()函数还提供了一些参数可以控制输出,这些参数包括:

1、start:指定开始遍历的位置,默认从0开始遍历。

2、step:指定每次遍历的步长,默认为1。

例如:

letters = ['a', 'b', 'c']
for i, letter in enumerate(letters, start=1):
    print(i, letter)

输出结果:

1 a
2 b
3 c

由于采用了start参数,所以遍历的索引值从1开始。

三、在字典中使用enumerate()函数

enumerate()函数不仅可以遍历列表、元组、集合等序列类型,同时也可以遍历字典类型。遍历字典类型时,enumerate()函数返回的是键值对的索引值和键值对本身,如下所示:

sales = {'apple': 3, 'orange': 2, 'banana': 1}
for i, (name, count) in enumerate(sales.items()):
    print(i, name, count)

输出结果:

0 apple 3
1 orange 2
2 banana 1

其中,enumerate()将字典中的键值对提取出来,每个键值对表示为一个元组(name, count),enumerate()遍历每个元组,返回元组的索引值i和元组本身(name, count)。

四、使用map()函数和enumerate()函数

map()函数可以将一个函数应用到序列的每个元素上,并返回一个新的序列。当把map()函数和enumerate()函数结合使用时,可以根据序列的索引值生成一个新的序列。

例如:

def power(x):
    return x*x

numbers = [1, 2, 3, 4, 5]
squares = map(power, numbers)
for i, square in enumerate(squares):
    print(i, square)

输出结果:

0 1
1 4
2 9
3 16
4 25

此处使用了map()函数将power()函数应用于numbers序列中的每个元素,生成一个新的squares序列。结合enumerate()函数,可以输出每个元素的索引值和对应的平方数。

五、结合列表推导式使用enumerate()函数

列表推导式可以提取序列的中的元素,并根据某个条件生成一个新的列表。当与enumerate()函数结合使用时,可以提取元素的索引值和对应的元素本身,并结合条件生成一个新的列表。

例如:

words = ['hello', 'world', 'python', 'programming']
sp_words = [i for i, word in enumerate(words) if word.startswith('p')]
print(sp_words)

输出结果:

[2, 3]

其中,sp_words列表表示在words列表中以p开头的元素的索引值,其实通过enumerate()函数返回的是一个包含索引和元素的元组,然后使用if语句过滤出满足要求的元素。

六、总结

以上介绍了enumerate()函数的用法和参数控制,通过代码示例展示了enumerate()函数在不同数据类型中的使用方法。enumerate()函数可以让我们更加优雅地书写代码,轻松遍历序列并获取元素的索引值,非常适合于在迭代器类型中进行操作。