之前一直认为zip只有压缩的功能,其实zip也存在解压的功能。下面就用一个简单的例子进行介绍。
由图中可见,针对不同的列表a,b,zip操作其实是获取其中各自对应的元素,并且组合起来成为一个元组(例如:a的第一个和b的第一个;a的第二个和b的第二个)。在a和c的例子中可以发现zip会取两者中个数最少的元素作为它们的集合(例如:c的长度是4但是最后的结果中只有3个)
这里最特别的是针对*zip(a,b)的操作,在这里*zipped 可理解为解压,取每个元素中对应位置上值恢复成原来压缩前的样子,只是这里类型由list变为了tuple
注意:在python3中要对zip对象添加list操作后才会显示,否则显示的是一个对象。而且经过list操作转化过后该对象也无法被反解压。
list(zip(*zipped))
这样的操作在这里是无效的,因为之前做过了list(zipped)
的操作。