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

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()函数是一个非常有用的函数,通过它,我们可以灵活的处理多个可迭代对象中的数据,轻松实现压缩和解压缩,提高数据处理的效率,是我们日常编程中不可缺少的工具之一。