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

掌握Python中enumerate()函数的高级使用技巧

发布时间:2023-05-31 13:08:10

Python内置函数中的enumerate()函数是一个非常方便的函数,它可以在循环中同时获取元素的索引和值。但是,除了最基本的用法之外,enumerate()函数还有许多高级的使用技巧。在本文中,我们将介绍一些这样的技巧,以帮助您更好地利用这个函数。

1. 枚举起始值的指定

enumerate()函数默认的起始值为0,但是可以在函数调用时指定一个不同的起始值。这本质上是通过传递一个整型参数来实现的,这个整型参数指定了要从哪个数字开始枚举。

例如,在以下代码中,我们将enumerate()函数的起始值指定为1,从而使它枚举(1, "apple"), (2, "banana"), (3, "orange") 。

fruits = ["apple", "banana", "orange"]
for index, fruit in enumerate(fruits, start=1):
    print(index, fruit)

输出:

1 apple
2 banana
3 orange

2. 反向枚举

有时候,我们不仅需要按照顺序枚举一个列表中的元素,而且需要按照相反的顺序枚举。利用Python的内置reversed()函数让我们可以反向枚举:

fruits = ["apple", "banana", "orange"]
for index, fruit in reversed(list(enumerate(fruits))):
    print(index, fruit)

输出:

2 banana
1 apple
0 orange

这里我们把enumerate()函数的枚举结果列表用reversed()函数反向一下,然后就可以得到反向枚举的效果。

3. 多个可迭代对象的枚举

除了枚举一个列表(或其他可迭代对象)的元素之外,enumerate()函数还可以用于枚举多个可迭代对象的元素。在这种情况下,可以传递多个可迭代对象给enumerate()函数,然后通过zip()函数合并它们。

例如,假设您有两个列表,一个列表包含名称,另一个列表包含相应的成绩。您可以使用enumerate()函数来为这两个列表中的元素分配相应的编号,然后再将它们合并,并得到一个包含名称、成绩和编号的元组。

names = ["Mike", "John", "Linda"]
scores = [80, 90, 95]

for index, (name, score) in enumerate(zip(names, scores)):
    print(f"#{index+1} - {name}: {score}")

输出:

#1 - Mike: 80
#2 - John: 90
#3 - Linda: 95

在这里,我们首先将两个列表names和scores使用zip()函数进行合并,并且在此基础上使用了enumerate()函数。最后,通过使用索引打印输出内容。

4. 枚举嵌套列表

除了常规的可迭代对象之外,enumerate()函数还可用于枚举嵌套列表。在这种情况下,您可以使用两个循环,一个用于枚举外部列表的元素,另一个用于枚举与其相关联的内部列表的元素。

lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for row_idx, row in enumerate(lists):
    for col_idx, item in enumerate(row):
        print(f"列表的行号是{row_idx}, 列号是{col_idx}, 值是{item}")

输出:

列表的行号是0, 列号是0, 值是1
列表的行号是0, 列号是1, 值是2
列表的行号是0, 列号是2, 值是3
列表的行号是1, 列号是0, 值是4
列表的行号是1, 列号是1, 值是5
列表的行号是1, 列号是2, 值是6
列表的行号是2, 列号是0, 值是7
列表的行号是2, 列号是1, 值是8
列表的行号是2, 列号是2, 值是9

在这里,我们首先使用外部循环来枚举外部列表的行,然后在内部循环中枚举与其相关联的列。这样可以让我们逐个访问所有嵌套的列表元素。

5. 枚举多个变量

最后,如果您还不知道,您可以使用Python的元组解包功能来使enumerate()函数同时返回元素的索引和值。这样,您可以将两者分别分配给两个变量。

fruits = ["apple", "banana", "orange"]

for index, fruit in enumerate(fruits):
    print(index, fruit)

输出:

0 apple
1 banana
2 orange

在这里,我们直接使用变量index和fruit,将enumerate()函数的元组解包对它们进行赋值,这样我们就可以在循环中同时访问索引和值了。

总结

以上就是enumerate()函数的五个高级使用技巧。这些技巧可以帮助您更好地利用这个Python内置函数,提高编程效率。希望这篇文章能够给你在日常编程中带来一些灵感和帮助。