zip: python的打包函数,可将两个或两个以上的可迭代对象按下标对应打包为一个个元组,得到一个新的以元组为元素的可迭代对象。
实例如下:
t1 = [1,2,3,4]
t2 = [5,6,7,8]
t3 = [9,10]
#迭代对象长度相同
print('长度相同时:',list(zip(t1,t2)))
#迭代对象长度不同
print('长度不同时:',list(zip(t1,t3)))
#多个迭代对象
print('多个迭代对象:',list(zip(t1,t2,t3)))
结果:
长度相同时: [(1, 5), (2, 6), (3, 7), (4, 8)]
长度不同时: [(1, 9), (2, 10)]
多个迭代对象: [(1, 5, 9), (2, 6, 10)]
小结: 长度相同时,生成的元组个数与任一可迭代对象相等;长度不同时,以最短的可迭代对象为基准进行打包。
a = [1,2,3,4]
b = [5,6,7,8]
c = [9,10,11,12]
for za,zb,zc in zip(a,b,c):
print('a里面元素:',za,'b里面元素:',zb,'c里面元素:',zc)
结果:
a里面元素: 1 b里面元素: 5 c里面元素: 9
a里面元素: 2 b里面元素: 6 c里面元素: 10
a里面元素: 3 b里面元素: 7 c里面元素: 11
a里面元素: 4 b里面元素: 8 c里面元素: 12
小结: 使用for
循环进行遍历
zip
打包后,相当于得到了一个压缩包。如果想要恢复为原先的可迭代对象,可以在打包对象前加*
进行解压。 t1 = [1,2,3,4]
t2 = [5,6,7,8]
#使用*号进行解压
z1 = zip(t2,t3)#得到打包对象
print('解压结果:',list(zip(*z1)))
结果:
解压结果: [(5, 6), (9, 10)]
小结: 在打包对象前加*
号可以进行解压。返回的结果是一个二维矩阵样式的可迭代对象。
博主其他文章推荐:
[1] 【python实用特性】-切片
[2] 【python实用特性】- 迭代、可迭代对象、迭代器
[3] 【python实用特性】- 列表生成式
[4] 【python实用特性】- yield生成器
[5] Python+selenium实现自动爬取实例
[6] python爬取豆瓣Top250-改进版
[7] requests 设置请求头、代理
[8] requests使用cookie模拟登陆豆瓣
[9] requests使用session保持会话