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

Python中用enumerate()函数进行整个列表的迭代操作?

发布时间:2023-06-11 20:03:04

在Python中,我们经常需要对一个列表或者一个集合进行迭代操作,访问这些元素,执行特定的操作。而在很多情况下,我们希望不仅能够访问到列表中的元素,还能够获得每一个元素的索引号,这时我们就可以使用Python内置函数enumerate()来实现。

enumerate()函数可以同时返回元素和它的对应索引号,能够极大简化了代码的编写,提高了代码的可读性,下面我们就来深入了解一下enumerate()函数的用法。

1. 语法及返回值

enumerate() 函数的语法格式如下:

enumerate(iterable, start=0)

其中,iterable代表被迭代的对象,如:列表、字符串、元组等;start代表索引的起始值,如果没有传值,默认为0。

返回值是一个enumerate对象,该对象在 for 循环时会包含一系列元组,每个元组排列为 (index,element) ,其中 index 是迭代计数器,而 element 则是从list 中对应的值。

2. 示例演示

我们来看一个使用 enumerate() 函数的简单示例来了解这个函数的基本用法。

lst = ['apple', 'banana', 'orange']
for index, item in enumerate(lst):
    print(index, item)

运行结果如下所示:

0 apple
1 banana
2 orange

以上代码首先定义了一个列表lst,我们使用for循环将其元素一个一个迭代出来,同时使用enumerate()函数获得索引与元素值。输出结果便是索引号和每个元素依次对应输出。

3. 应用场景

在很多场景下,我们都可以利用enumerate()函数简化编程过程,提高代码效率,如:

3.1. 计算每个单词的长度并输出

下面是一组简单的代码,我们需要计算每个单词的长度并输出。

word_lst = ['Python', 'is', 'an', 'interpreted', 'high-level', 'general-purpose', 'programming', 'language.']
lengths = []
for word in word_lst:
    lengths.append(len(word))
print(lengths)

输出结果:

[6, 2, 2, 11, 10, 15, 11, 9]

以上代码首先定义了一个单词列表word_lst,我们使用for循环遍历每一个单词,调用len()函数获取单词长度,将长度插入到一个列表lengths中。

现在我们改写一下上面这段代码,使用enumerate()函数简化代码。

word_lst = ['Python', 'is', 'an', 'interpreted', 'high-level', 'general-purpose', 'programming', 'language.']

lengths = []
for index, word in enumerate(word_lst):
    lengths.append(len(word))
print(lengths)

输出结果与上面相同。

以上代码首先定义了一个单词列表word_lst,我们使用for循环遍历每一个索引和单词,调用len()函数获取单词长度,将长度插入到一个列表lengths中。通过使用enumerate()函数,我们可以直接得到每个单词的索引和元素值,无需多写一步计数器。

3.2. 遍历两个列表并比较其元素值是否相等

下面是一组简单的代码,我们需要遍历两个列表a和b,并比较a和b中对应位置上的元素是否相等。

a = [9, 2, 5, 7, 1]
b = [5, 2, 7, 9, 1]
for i in range(len(a)):
    if a[i] == b[i]:
        print('a[%d] and b[%d] are the same.' % (i, i))
    else:
        print('a[%d] and b[%d] are different.' % (i, i))

输出结果:

a[0] and b[0] are different.
a[1] and b[1] are the same.
a[2] and b[2] are different.
a[3] and b[3] are the same.
a[4] and b[4] are the same.

以上代码首先定义了两个列表a和b,我们使用for循环计数器i遍历列表a的每一个元素,同时针对每个i值也调用了列表b的元素,进行判断两个列表对应位置上是否相等。

现在我们改写一下上面这段代码,使用enumerate()函数简化代码。

a = [9, 2, 5, 7, 1]
b = [5, 2, 7, 9, 1]
for i, (x, y) in enumerate(zip(a,b)):
    if x == y:
        print('a[%d] and b[%d] are the same.' % (i, i))
    else:
        print('a[%d] and b[%d] are different.' % (i, i))

输出结果与上面相同。

以上代码首先定义了两个列表a和b,我们使用enumerate()函数遍历a和b的所有元素,同时将它们打包成一个元组,元组的每个元素包含a和b中的对应元素。这种方式比之前的开销更小,代码更简单易懂。

4.总结

在Python中,enumerate()函数可极大地简化代码的编写,提高代码的可读性。其底层实现也是相当简便,仅仅是一个循环遍历计数器。使用enumerate()函数,可以方便地得到每个单词与对应的索引号、比较两个列表中位置上的元素是否相等等等,极大简化了代码的编写,为我们的日常工作和生活带来了便利。