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

Python中的`zip()`函数:将序列中的元素一一配对,返回一个元组列表

发布时间:2023-06-17 15:49:54

在Python中, zip()函数是用于将多个序列一一配对并返回一个元组列表的函数。使用zip()函数,我们可以将两个或多个列表、元组或其他序列按其索引一一配对,并将它们作为元组的形式一一对应组合成一个新的列表。

zip()函数用法:

zip(*iterables)

其中,iterables是需要组合的序列,可以是多个序列,最少需要一个序列。

下面我们来看看zip()是如何工作的。

首先,我们定义两个列表:

x = [1, 2, 3]
y = ['a', 'b', 'c']

然后使用zip()函数来将这两个列表配对并返回一个元组列表:

>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 'a'), (2, 'b'), (3, 'c')]

我们可以看到,zip()函数将列表x和列表y中的元素按照索引一一配对,并将它们组合成元组的形式返回。在本例中,新的列表中包含3个元组,每个元组包含两个元素。

需要注意的是,zip()函数返回的是一个迭代器对象,如果需要得到一个列表对象,我们需要使用list()函数将迭代器转化为列表。

我们也可以将多个序列一同传入zip()函数:

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]

>>> zipped = zip(a, b, c)
>>> list(zipped)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

在上面的例子中,我们将三个列表同时传入zip()函数来将它们一一配对,并组成一个3个元素的元组列表。

需要注意的是,如果被传入的序列中的元素的长度不同,zip()函数将会以长度最短的序列为准,对于超出长度的元素将会被忽略不计。例如:

x = [1, 2, 3]
y = ['a', 'b']
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 'a'), (2, 'b')]

在上面的例子中,列表y只有2个元素,而列表x有3个元素。因为zip()函数会以最短的序列为准,所以列表y的最后一个元素并没有被包含在函数返回的元组列表中。

在Python中,我们也可以使用zip()函数来解压缩序列。解压缩操作与压缩操作正好相反,可以将一个元组列表转化为多个序列。例如:

>>> zipped = [(1, 'a'), (2, 'b'),(3, 'c')]
>>> x, y = zip(*zipped)
>>> x
(1, 2, 3)
>>> y
('a', 'b', 'c')

可以看到,zip()函数将元组列表zipped解压缩为两个序列xy

总结:

- zip()函数是将多个序列一一配对并返回一个元组列表的函数。

- zip()函数是一个迭代器对象,如果需要得到一个列表对象,我们需要使用list()函数将迭代器转化为列表。

- 如果被传入的序列中的元素的长度不同,zip()函数将会以长度最短的序列为准,对于超出长度的元素将会被忽略不计。

- zip()函数还可以将一个元组列表转化为多个序列。