Python .zip() 函数的用法

当你在 Python 中使用 zip() 函数时,它将两个或多个数据集 “压缩” 到一起。这将返回一个包含从数据集衍生出来的成对项目的对象。它按照索引的顺序对这些项目进行分组。

让我再细分一下:第一个数据集的第一个项目与第二个数据集的第一个项目配对,两个数据集的第二个项目相互配对,以此类推。

在这篇文章中,我们将通过一些例子看看如何在 Python 中使用 zip() 函数。

如何在 Python 中使用 zip() 函数

下面是 Python 中 zip() 函数的语法:

zip(dataSet1, dataSet2, ...)

这个示例演示它是如何工作的:

names = ("John", "Jane", "Jade")
ages = (2, 4, 6)

print(zip(names, ages))
# <zip object at 0x7f8d5915cc40>

在上面的代码中,我们创建了两个元组——names 和 ages

然后我们使用了 zip() 函数:print(zip(names, ages))

但是我们实际上没有得到成对的数据。这是因为我们必须说它将被压缩到什么数据结构中,如下:

names = ("John", "Jane", "Jade")
ages = (2, 4, 6)

zipped = zip(names, ages)

print(tuple(zipped))
# (('John', 2), ('Jane', 4), ('Jade', 6))

我们将压缩后的数据存储在一个名为 zipped 的变量中,在打印时,我们将其嵌套在一个元组中:print(tuple(zipped))

我对代码的输出进行了注释:(('John', 2), ('Jane', 4), ('Jade', 6))。正如你在上面看到的,在一个给定的索引中的每个项目都与另一个数据集中相同索引的另一个项目配对。

你也可以返回嵌套在一个列表中的数据,方法如下:

names = ("John", "Jane", "Jade")
ages = (2, 4, 6)

zipped = zip(names, ages)

print(list(zipped))
# [('John', 2), ('Jane', 4), ('Jade', 6)]

这与上一个例子相同,但我们没有使用 tuple(zipped),而是使用了 list(zipped)

以同样的方式,我们也可以使用 dict 和 set,但使用 set 时返回的数据可能是无序的。

我们可以通过这样的方式循环浏览压缩的数据:

names = ("John", "Jane", "Jade", "John")
ages = (2, 4, 6)

zipped = zip(names, ages)

for(x,y) in zipped:
    print(x,y)

# John 2
# Jane 4
# Jade 6

小结

在这篇文章中,我们学习了什么是 zip() 函数以及它在 Python 中的作用。

我们看到了如何压缩两个数据集并使用不同的数据结构返回它们的配对。

最后,我们看到了如何遍历并打印压缩后的数据。