enumerate()函数:获取序列元素的索引和值
enumerate()函数是Python自带的一个函数,它用于将一个可迭代对象(序列、列表、元组等)中的元素进行枚举,同时返回每个元素对应的索引和值。
使用enumerate()函数的方法非常简单,只需要通过传入一个可迭代对象,并添加一个可选的起始值来生成一个枚举对象。下面是使用enumerate()函数的语法:
enumerate(iterable, start=0)
其中,iterable代表需要枚举的可迭代对象,start表示枚举的起始值,默认为0。
接下来,我们通过一个例子来演示如何使用enumerate()函数。
假设我们有一个列表,里面包含若干个字符串,现在我们想要枚举这些字符串,并打印出它们在列表中的索引和值,如下所示:
fruits = ['apple', 'banana', 'orange', 'pear']
我们可以使用以下代码来实现:
for i, fruit in enumerate(fruits):
print(i, fruit)
上述代码会输出:
0 apple
1 banana
2 orange
3 pear
可以看出,enumerate()函数返回了一个迭代器对象,其中每个元素都是一个元组, 个元素表示当前元素在列表中的索引,第二个元素表示当前元素的值。
除了上述示例代码外,enumerate()函数还可以和其他Python函数进行配合使用,比如filter()函数、map()函数等。下面是一个比较复杂的例子,它演示了如何使用enumerate()函数、zip()函数和filter()函数来对两个列表进行筛选、枚举和组合:
a = [1, 2, 3, 4, 5]
b = [5, 4, 3, 2, 1]
c = list(filter(lambda x: x[0] % 2 == 0, zip(a, b)))
for i, v in enumerate(c):
print(i, v)
上述代码会输出:
0 (1, 5)
1 (3, 3)
2 (5, 1)
这里的代码比较复杂,需要经过逐步解释才能理解。首先,我们使用zip()函数将两个列表a和b合并成一个元组列表c,其中每个元组包含了a和b对应位置的元素。然后,我们使用filter()函数对c进行筛选,只保留那些索引为偶数的元组。最后,我们使用for循环对c进行枚举,并打印出索引和对应的元组。
最后,需要提醒的是,enumerate()函数返回的是一个迭代器对象,因此在使用它时需要使用for循环或者list()函数进行遍历。否则,它只会返回一个枚举对象(enumerate object),而不是对应的元素。
