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

如何使用Python自带的zip函数?

发布时间:2023-06-09 21:31:06

Python自带的zip函数是一个非常有用的函数,它可以将多个序列(可迭代对象)打包成一个序列。它可以一次性遍历多个序列,并将它们的元素配对,生成元组列表。

zip函数的语法:

zip(*iterables)

其中*iterables表示可迭代的对象的参数,包括list、tuple、string、set以及range等等。如下所示,是一个基本的zip函数调用的例子。

a = [1, 2, 3]
b = ['a', 'b', 'c']
print(list(zip(a, b)))

输出:

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

可以看到,zip函数将a和b两个列表中的元素一一对应配对起来,生成了一个元组列表。

如果传入zip函数的参数不等长,那么zip函数将在最短的可迭代对象耗尽时停止生成元组,忽略其余对象。

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

输出:

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

可以看到,由于b列表只有三个元素,当a列表中第四个元素没有对象可对应时,zip函数就停止了。

如果需要生成长一点的序列,可以通过zip函数的返回值进行操作。返回值是一个迭代器,元素是元组,其中的第一个元素来自第一个序列,第二个元素来自第二个序列,依此类推。

a = [1, 2, 3, 4]
b = ['a', 'b', 'c']
result = zip(a, b)
print(list(result))
print(list(result))

输出:

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

由于返回值是一个迭代器,所以第二次调用list(result)是空的。

除此之外,zip函数还可以用于解压缩序列。当需要将列表中的元组还原为两个单独的列表时,可以使用以下方法:

a = [(1, 'a'), (2, 'b'), (3, 'c')]
a1, a2 = zip(*a)
print(list(a1))
print(list(a2))

输出:

[1, 2, 3]
['a', 'b', 'c']

通过zip函数的逆过程,将列表中的元组解压缩为两个单独的列表。

除了以上应用之外,在开发中常常会出现需要对多个列表进行操作的情况。利用zip函数,可以非常方便地对这些列表进行操作,而无需使用循环结构。

总之,zip函数是Python自带的一个非常重要的函数,使用它可以简化我们的代码,并提高代码的可读性和执行效率。