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

Python内置函数——enumerate()详解

发布时间:2023-06-16 00:02:43

enumerate()是Python内置函数之一,它可以将一个可遍历的数据对象组合为一个索引序列和元素序列。在循环中同时获取索引和元素,使得程序开发更加方便简洁。

具体来说,enumerate()函数的语法为:

enumerate(iterable, start=0)

其中,iterable表示一个可迭代对象(如列表、字典、元组、字符串等),start表示起始索引,即从哪个数字开始返回索引,缺省值为0。

下面我们来看一些使用示例。

1.遍历列表

假设有一个列表,我们想在循环中同时获取元素和索引:

animals = ['cat', 'dog', 'elephant', 'tiger']

使用enumerate()函数可以实现:

for i,animal in enumerate(animals):

    print(i, animal)

执行结果为:

# 0 cat

# 1 dog

# 2 elephant

# 3 tiger

在上面的代码中,枚举变量为i和animal,其中i表示索引,animal表示列表中的元素。在每次循环中,利用enumerate()函数迭代传入的可迭代对象,返回一个包含当前元素和其对应索引的元组,再进行解包,得到元素和索引值。

2.遍历字典

同样地,如果要在循环中同时获取字典中每个元素的键和值:

d = {'apple': 2.5, 'banana': 3.2, 'orange': 4.1}

for i, (key, value) in enumerate(d.items()):

    print(i, key, value)

执行结果为:

# 0 apple 2.5

# 1 banana 3.2

# 2 orange 4.1

在上述代码中,使用enumerate(d.items())来枚举字典元素,每次迭代返回一个包含键值对的元组。因此,需要解包元组来获取键和值。

3.获取分隔符位置

有时我们需要获取字符串中某个字符的所有位置,然后再将这些位置连接起来。如果字符出现的次数较多,会非常麻烦和容易出错。

在这种情况下,可以使用enumerate()函数和列表推导式来实现:

s = 'abacabadabacaba'

indices = [i for i, x in enumerate(s) if x == 'a']

print(indices)

执行结果为:[0, 2, 4, 6, 11, 13, 15]

4.生成字典

除了遍历可迭代对象,enumerate()函数还可以生成一个字典,其中键为枚举的元素,值为元素的索引。

例如,将一个列表转化为字典:

fruits = ['apple', 'banana', 'orange', 'kiwi']

fruit_dict = dict(enumerate(fruits))

print(fruit_dict)

执行结果为:{0: 'apple', 1: 'banana', 2: 'orange', 3: 'kiwi'}

需要注意的是,在转换为字典时需要使用dict()函数。

总结

以上就是enumerate()函数的一些常见用法,总的来说,它可以简化代码,使得程序具有更好的可读性和可维护性。如果你在编写循环代码时需要同时访问索引和元素,可以考虑使用这个函数。同时也需要注意,enumerate()返回的元素序列是一个迭代器对象,如果想转换为列表或其他可遍历对象,需要使用list()或tuple()函数。