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

Python中的zip()函数教程

发布时间:2023-06-12 15:07:54

zip()函数是Python中常用的函数之一,它可以用于将多个可迭代对象压缩在一起,形成一个新的元组序列。它的语法如下:

zip(*iterables)

其中,*iterables表示可迭代对象,可以输入多个。zip()函数的返回值是一个zip对象,可以通过list()函数将其转换为列表,也可以直接遍历zip对象中的元素。

以下是zip()函数的几个常见用法:

1. 拉链式压缩多个列表

zip()函数最常见的用法是将多个列表进行拉链式压缩,即将多个列表中相同位置上的元素压缩为一个元组,然后组成一个新的元组序列。示例如下:

a = [1, 2, 3]
b = [4, 5, 6]
c = ["a", "b", "c"]

zipped = zip(a, b, c)
print(list(zipped))  # [(1, 4, 'a'), (2, 5, 'b'), (3, 6, 'c')]

在这个例子中,我们将a、b、c三个列表中相同位置上的元素压缩为一个元组,然后组成了一个新的元组序列。

需要注意的是,zip()函数仅会压缩元素个数最少的那个可迭代对象。如果有一个可迭代对象的元素个数比其他对象要少,那么它将只和其他对象中对应位置的元素一起压缩。

2. 转置矩阵

除了对多个列表进行拉链式压缩,zip()函数还可以用于对矩阵进行转置。比如有一个3行2列的矩阵:

matrix = [[1, 2], [3, 4], [5, 6]]

现在需要进行转置,即将其变为2行3列的矩阵。可以使用zip()函数将其转置:

transposed = list(zip(*matrix))
print(transposed)  # [(1, 3, 5), (2, 4, 6)]

这里使用了一个*运算符,它可以将matrix中的元素解压出来传递给zip()函数,实现对矩阵的转置。

3. 合并字典

除了对列表或矩阵进行转换,zip()函数还可以用于合并多个字典。可以先将多个字典的键和值分别提取出来,然后使用zip()函数将它们合并为一个新的字典。

keys = ["a", "b", "c"]
values = [1, 2, 3]
d = dict(zip(keys, values))
print(d)  # {'a': 1, 'b': 2, 'c': 3}

在这个例子中,我们将两个列表keys和values分别作为zip()函数的参数进行压缩,得到一个由键值对元组组成的zip对象,然后通过dict()函数将其转换为一个字典。

总结:

zip()函数是Python中常用的函数之一,它可以将多个可迭代对象的元素捆绑在一起,形成一个新的序列。最常见的用法是将多个列表按相同位置的元素进行压缩,也可以用于对矩阵进行转置,或者合并多个字典。需要注意的是,zip()函数仅会压缩元素个数最少的那个可迭代对象。