Python中的zip()函数教程
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()函数仅会压缩元素个数最少的那个可迭代对象。
