zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
通俗来讲:
如果将列表[],元组()等比作衣服的话,zip是将括号里的各个iterable脱去最外层衣,然后为元素一一配对,每一对穿上元组()的外衣,再给整体穿上列表[]的外衣:
一维打包
>>> zip([1,2],[3,4])
<zip object at 0x00000281BB9FE680>
>>> list(zip([1,2],[3,4])) //[1,2]为iterable1,[3,4]为iterable2
[(1, 3), (2, 4)]
zip脱去[1,2]的最外层衣[],iterable1的待配对元素为1,2。同理,iterable2待配对元素为3,4。zip将1,3和2,4配对然后穿上元组的外衣形成(1,3),(2,4),再给整体穿上[]的外衣形成[(1, 3), (2, 4)]
普通二维打包
>>> list(zip([[1,2],[3,4]])) //[[1,2],[3,4]]为iterable1,None为iterable2
[([1, 2],), ([3, 4],)]
zip脱去[[1,2],[3,4]]的最外层衣[],则[1,2]和[3,4]为iterable1的待配对元素,iterable2为None,则其待配对元素也