📜  一起使用 enumerate() 和 zip() (1)

📅  最后修改于: 2023-12-03 15:21:26.876000             🧑  作者: Mango

一起使用 enumerate() 和 zip()

在 Python 中,我们可以使用两种不同的方式来同时遍历多个序列:

  1. 使用 enumerate() 函数,它可以为每个元素返回一个索引值;
  2. 使用 zip() 函数,它可以将多个序列配对在一起,并将相同位置的元素组成元组返回。

在有些情况下,我们可能需要同时使用这两种函数。下面我们来介绍一下具体的用法。

1. 使用 enumerate()

首先,我们来看一下 enumerate() 函数的语法格式:

enumerate(sequence, start=0)

其中,sequence 表示要遍历的序列,可以是列表、元组、字符串或其他可迭代对象;start 表示起始的索引值,默认为 0。enumerate() 函数将返回一个 enumerate 对象,它包含了原序列的元素及其对应的索引值。

下面是一个简单的例子:

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

输出结果为:

0 apple
1 banana
2 orange

其中,index 表示当前元素在序列中的索引值,fruit 表示当前元素的值。我们可以看到,使用 enumerate() 函数可以非常方便地遍历序列并同时获得每个元素的索引值。

2. 使用 zip()

接下来,我们来看一下 zip() 函数的语法格式:

zip(*iterables)

其中,iterables 表示要配对的多个序列。zip() 函数将返回一个 zip 对象,它包含了每个序列相同位置的元素组成的元组。

下面是一个简单的例子:

numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
for pair in zip(numbers, letters):
    print(pair)

输出结果为:

(1, 'a')
(2, 'b')
(3, 'c')

其中,pair 表示当前位置两个序列中的元素组成的元组。我们可以看到,使用 zip() 函数可以将多个序列中相同位置的元素进行配对。

3. 一起使用 enumerate() 和 zip()

有时候,我们可能需要遍历多个序列并同时获得它们的索引值和对应位置的元素。这时,我们可以使用 enumerate() 和 zip() 函数结合起来使用。

下面是一个例子,我们用它来说明这种使用方式:

fruits = ['apple', 'banana', 'orange']
prices = [1.0, 2.0, 3.0]
for index, (fruit, price) in enumerate(zip(fruits, prices)):
    print(index, fruit, price)

输出结果为:

0 apple 1.0
1 banana 2.0
2 orange 3.0

其中,(fruit, price) 表示 zip(fruits, prices) 返回的元组,包含了两个序列中相同位置的元素。我们将它作为一个整体,再结合 enumerate() 函数获得其索引值。这样,我们就可以方便地遍历多个序列并同时获得它们的索引值和对应位置的元素了。

总之,使用 enumerate() 和 zip() 函数可以方便地处理多个序列的遍历和配对操作。它们的结合使用也可以让我们更加便捷地获取多个序列的元素和索引值。