基础知识:
使用zip()函数来可以把列表合并,并创建一个元组对的列表。
python3.x版本中zip是一个可迭代对象,使用时必须将其放入list中全部显示
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> zip(a,b)
<zip object at 0x000001E5FC78BC48>
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6)]
zip()参数可以接受任何类型的序列
>>> l1,l2,l3=(1,2,3),(4,5,6),(7,8,9)
>>> list(zip(l1,l2,l3))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
再看一个明显一点的zip的列子:
>>> x = ["id", "name", "age"]
>>> y = [3306,"dh",18]
>>> z = zip(x, y)
>>> print(list(z))
[('id', 3306), ('name', 'dh'), ('age', 18)]
可以明显的看出zip的作用了吧
同时也可以有两个以上的参数;当传入参数的长度不同时,zip能自动以最短序列长度为准进行截取,获得元组。
>>> str1='abc'
>>> str2='def123'
>>> list(zip(str1,str2))
[('a', 'd'), ('b', 'e'), ('c', 'f')]
zip类似于压缩与解压缩的操作:
>>> x=[1,2,3]
>>> y=[4,5,6]
>>> z=[7,8,9]
>>> xyz=zip(x,y,z)
>>> zyx=zip(*xyz)
>>> list(zyx)
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
zip函数将字典反转成列表形式:
>>> x = {'age':18,'name':'dh','id':3306}
>>> print(x.items())
dict_items([('id', 3306), ('name', 'dh'), ('age', 18)])
>>> print(x.values())
dict_values([3306, 'dh', 18])
>>> print(x.keys())
dict_keys(['id', 'name', 'age'])
>>> list(zip(x.values(),x.keys()))
[(3306, 'id'), ('dh', 'name'), (18, 'age')]
搭配for循环,支持并行迭代操作方法
zip()方法用在for循环中,就会支持并行迭代:
>>> l1=[1,2,3]
>>> l2=[2,3,8]
>>> for x,y in zip(l1,l2):
print(x,y,'-->',x*y)
1 2 --> 2
2 3 --> 6
3 8 --> 24