当前位置:  开发笔记 > 编程语言 > 正文

Python:为什么使用zip(*)代替unzip()?

如何解决《Python:为什么使用zip(*)代替unzip()?》经验,为你挑选了1个好方法。

鉴于python的禅,为什么zip(*)用于解压而不是一些名为unzip()的函数?例如Transpose/Unzip Function(zip的反转)?显示如何解压缩列表.

>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]

怎么样:

比丑陋美丽

明确而非隐含

比复杂简单

可读

等等

然后

>>> unzip([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

我在这里错过了什么?



1> Vincent Sava..:

当你这样做时,你实际上并没有解压缩zip(*your_list).你还在拉链.

zip是一个可以根据需要使用尽可能多的参数的函数.在你的情况,你基本上是有要压缩四个不同的序列:('a', 1),('b', 2),('c', 3)('d', 4).因此,你想这样调用zip:

>>> zip(('a', 1), ('b', 2), ('c', 3), ('d', 4))
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]

但是你的序列不在单独的变量中,你只需要一个包含它们的列表.这是*操作符进入的位置.此运算符以列表的每个元素成为函数参数的方式解压缩列表.

这意味着当你这样做时:

your_list = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
zip(*your_list)

Python将zip列表中每个元素作为参数调用,如下所示:

zip(('a', 1), ('b', 2), ('c', 3), ('d', 4))

这就是为什么unzip不需要一个功能的原因:解压缩只是另一种拉链,只需要zip功能和*操作员就可以轻松实现.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有