Python中用enumerate()函数进行整个列表的迭代操作?
在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()函数,可以方便地得到每个单词与对应的索引号、比较两个列表中位置上的元素是否相等等等,极大简化了代码的编写,为我们的日常工作和生活带来了便利。
