Python的内置zip
函数能轻松地并行迭代两个或者更多可迭代对象,它返回的元组可以拆包成变量,分别对应各个并行输入中的一个元素。注意,Python2中zip
函数返回的是列表,而在Python3中返回的是生成器。
zip函数名称的由来
zip函数的名字取自拉链系结物(zipper fastener),因为这个物品用于把两个拉链边的链牙咬合在一起,这形象说明了zip(left, right)
的作用,zip函数与文件压缩没有关系。
zip内置函数的使用示例
zip
函数返回一个生成器,按需生成元组。
为了输出,构建一个列表,通常,我们会迭代生成器。
返回值的长度,以参数中最短的可迭代对象为准。
itertools.zip_longest
函数的作用是以参数中最长的可迭代对象为准,使用可选的fillvalue
(默认值为None)填充缺失的值。
zip函数与*
运算符结合,实现将结果拆分成元组的功能。
zip函数的实际应用场景
zip函数由两个列表分别作为键和值生成字典
|
|
zip函数返回值是生成器的相关陷阱
|
|
由于zip函数返回的是生成器,因此它的内容只能被消费一次。如需解决这个问题,可以使用list()
将生成器转成列表。示例如下:
zip函数的等价代码实现
|
|