zip概述
zip即将多个可迭代对象组合为一个可迭代的对象,每次组合时都取出对应顺序的对象元素组合为元组,直到最少的对象中元素全部被组合,剩余的其他对象中未被组合的元素将被舍弃。
keys = ['one', 'two', 'three']
values = [1, 2, 3]
d = zip(keys, values)
print(list(d))
复制代码
示例结果:
[('one', 1), ('two', 2), ('three', 3)]
复制代码
可以看到我们由zip
模拟了一个类似字典的一一对应的元组迭代对象,并将其转化为list
类型查看,当然我们可以利用获取迭代对象生成真正的键值字典:
keys = ['one', 'two', 'three']
values = [1, 2, 3]
d = zip(keys, values)
D = {}
for key, value in d:
print(key, value)
D[key] = value
print(D)
复制代码
示例结果:
one 1
two 2
three 3
{'one': 1, 'two': 2, 'three': 3}
复制代码
我们可以利用for循环迭代赋值给字典完成对应的键值映射,在Python3中我们还可以用一句话就可以完成D = dict(zip(keys,values))
.
*zip
当我们想回退为迭代器组合之前的状态时,我们可以利用*
“解压”现在“压缩”过的新的迭代对象
keys = ['one', 'two', 'three', 'four']
values = [1, 2, 3]
d = zip(keys, values)
older = zip(*d)
print(list(older))
复制代码
“解压”结果:
[('one', 'two', 'three'), (1, 2, 3)]
复制代码