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

enumerate()函数:获取序列元素的索引和值

发布时间:2023-06-02 14:48:12

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),而不是对应的元素。