如何使用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自带的一个非常重要的函数,使用它可以简化我们的代码,并提高代码的可读性和执行效率。
