Python的zip()函数,数据压缩再不用愁
发布时间:2023-05-21 07:22:25
Python中的zip()函数是一种很有用的工具,它能够帮助我们实现数据的压缩,将多个列表、元组或其他可迭代对象打包成一个tuple的列表,同时也可以将多个可迭代对象作为参数传入,将其合并为一个迭代器,从而实现数据的压缩。
zip()函数的语法格式如下:
zip([iterable, ...])
其中,参数iterable可以是多个序列或可迭代对象,包括列表、元组、字典、字符串等数据类型。zip()函数返回一个迭代器,包括了每个可迭代对象中对应的元素,这些元素打包成tuple后组成的列表。
下面我们来看一个实例,假设有两个列表a和b,我们希望将它们按照位置打包成元组,打印出来:
a = [1, 2, 3, 4]
b = ['a', 'b', 'c', 'd']
# 使用zip()函数实现数据压缩
c = zip(a, b)
# 循环遍历元组列表,并打印出来
for i in c:
print(i)
输出结果如下:
(1, 'a') (2, 'b') (3, 'c') (4, 'd')
可以看到,zip()函数按照位置将可迭代对象打包成元组,输出了一个包括了每个可迭代对象中对应的元素的列表。
另外,我们还可以使用*操作符对zip()函数的返回值进行解压缩,将其一个一个展开:
a = [1, 2, 3, 4] b = ['a', 'b', 'c', 'd'] # 使用zip()函数实现数据压缩 c = zip(a, b) # 使用*操作符解压缩并打印出来 print(*c)
输出结果如下:
(1, 'a') (2, 'b') (3, 'c') (4, 'd')
除了可以对两个列表进行压缩之外,zip()函数还可以同时处理多个可迭代对象,并将其打包成元组:
a = [1, 2, 3, 4] b = ['a', 'b', 'c', 'd'] c = ['A', 'B', 'C', 'D'] d = ['x', 'y', 'z'] # 将多个可迭代对象打包成元组,并输出 print(list(zip(a, b, c, d)))
输出结果如下:
[(1, 'a', 'A', 'x'), (2, 'b', 'B', 'y'), (3, 'c', 'C', 'z')]
需要注意的是,当参数iterable中的长度不同时,zip()函数只会输出最短的序列的长度,例如:
a = [1, 2, 3, 4] b = ['a', 'b', 'c'] # 使用zip()函数将两个列表打包成元组 print(list(zip(a, b)))
输出结果如下:
[(1, 'a'), (2, 'b'), (3, 'c')]
可以看到,当b列表的长度不足4时,zip()函数只输出了3个元素打包成的元组。
此外,zip()函数还可以与*操作符配合使用,将已经打包成元组的列表解压缩为多个单独的值,例如:
a = [1, 2, 3, 4] b = ['a', 'b', 'c', 'd'] # 使用zip()函数将两个列表打包成元组 print(list(zip(a, b))) # 使用*操作符解压缩 c, d = zip(*zip(a, b)) # 输出解压缩后的结果 print(c) print(d)
输出结果如下:
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
(1, 2, 3, 4)
('a', 'b', 'c', 'd')
总之,Python的zip()函数是一个非常有用的函数,通过它,我们可以灵活的处理多个可迭代对象中的数据,轻松实现压缩和解压缩,提高数据处理的效率,是我们日常编程中不可缺少的工具之一。
