Python 将压缩序列解压

  • Post category:Python

当我们使用Python操作压缩文件时,经常会遇到需要解压缩序列的情况。Python提供了一个内置的方法zip()可以将两个或多个序列压缩到一起。而解压缩序列,则可以使用*进行解压。

如下述代码块,构造了两个序列ab,通过zip()将两个序列压缩成了一个zip对象,并通过*解压和显式打印了该对象:

a = [1, 2, 3]
b = [4, 5, 6]
zipped = zip(a, b)
print(*zipped)

输出结果如下:

(1, 4) (2, 5) (3, 6)

那么如何使用一个压缩对象进行解压缩呢?可以使用zip()的配对特性,将上述代码块修改为如下代码块进行测试:

c_zip = [('a', 1), ('b', 2), ('c', 3)]
c_letter, c_number = zip(*c_zip)
print(c_letter)
print(c_number)

结果如下:

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

可以看到,上述代码通过配对特性,把c_zip压缩对象分别解压缩为了两个序列c_letterc_number

需要注意的是,zip()方法在压缩时会挑选最小长度的序列进行压缩,如果长度不同,则只会压缩到最小的长度。如果还有元素没有被压缩,则会被忽略。

以上是Python将压缩序列解压使用方法的完整攻略,下面还有一条示例:

d = [1, 2]
e = [3, 4, 5]
d_e = zip(d, e)
print(*d_e)

输出结果如下:

(1, 3) (2, 4)

可以看到,zip()方法在这里只取到了最小长度的长度2,第三个元素5被忽略了。