zip()和*zip()

Posted kenny-feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zip()和*zip()相关的知识,希望对你有一定的参考价值。

zip():压缩

*zip():解压

zip() 函数:用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,即元组列表

但实际操作中,zip() 返回的是一个对象,在 idle 中并不将它原本的面貌展示出来。如下:

技术图片

zip(a,b):将a和b中的元素对应组合成元组。结果:(1,4),(2,5),(3,6)。而要想看到这个结果,需用*zip()函数

*zip(a,b):先将a和b中的元素对应组合成元组形成结果,再将这个结果解压,即 * 表示解压。但不输出,需借助print打印出来:

技术图片

(此语句仅用来查看zip(a,b)的真正面貌,这三个元组之间没有逗号)

但若先 t = zip(a,b),再print(*t)的话,没有任何返回值,因为*zip()中的 * 和zip是连用的,不能将它们分开用。而print(*zip(t))是另一种结果,即print(*zip(zip(a,b))):

技术图片

将 t 即 (1,4)  (2,5)  (3,6)这三个参数与空进行组合成元组

不能直接用*zip(a,b),否则:

技术图片

可以用list、set、tuple对zip(a,b)进行转化。如:list(zip(a,b))的结果为 [ (1,4) , (2,5) , (3,6) ]。再如:set(zip(a,b))的结果为 { (1,4) , (2,5) , (3,6) },但若集合中有相同的元组,则只保留一个(因为集合的元素是不重复性),为避免此情况,一般用 list 进行转化

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

 

以上是关于zip()和*zip()的主要内容,如果未能解决你的问题,请参考以下文章

LinuxLinux中zip和unzip

zip() 和 zip(*) 似乎给出了相似的结果[重复]

python zip()和zip(*)的区别

GZIP 与zip区别

linux下怎么解压zip文件

使用 Python 将 zip 文件和嵌套的 zip 文件提取到目标目录中