zip 函数
1. 以多个可迭代对象作为参数,把对象中的元素打包成一个个元组
[1, 2], [3, 4] --> [1, 3], [2, 4]
2. 如果 可迭代对象长度不一致,以短为准
[1, 2], [3, 4, 5] --> [1, 3], [2, 4]
3. 利用 * 号操作符时,输入为 单个可迭代对象,作用是把 可迭代对象中各个元素进行解压,然后再打包
*['abc', [1, 2, 3]] --> ('a', 1), ('b', 2), ('c', 3)
注意 此时 可迭代对象中的 元素也必须 可迭代
4. 返回一个对象,可用 list() 转换为列表,这样可节省内存 【Python2 直接返回 list】
x = zip([1, 2], [3, 4]) print(x, type(x)) # <zip object at 0x0000000003129508> <class 'zip'> list(x) # 转换为列表
示例代码
##### 不带 *,参数为 多个可迭代对象 ### 长度一致 for j in zip([1, 2], [3, 4]): print(j) # (1, 3) # (2, 4) ### 长度不一致,以短为准 for j in zip([1, 2], [3, 4, 5]): print(j) # (1, 3) # (2, 4) ### 也可以是多个 list for j in zip([1, 2], [3, 4, 5], [7, 8]): print(j) # (1, 3, 7) # (2, 4, 8) ##### 带 *,参数为 单个可迭代对象 for i in zip(['flss', 'flsdfs', 'flpposfs']): # 不带 *,便于对比 print(i) # ('flss',) # ('flsdfs',) # ('flpposfs',) for i in zip(*['flss', 'flsdfs', 'flpposfs']): # 带 *,list print(i) # ('f', 'f', 'f') 本来是个 list,把每个元素拆开,对应位置合并,拆开操作理解为解压 # ('l', 'l', 'l') # ('s', 's', 'p') # ('s', 'd', 'p') for i in zip(*('flss', 'flsdfs', 'flpposfs')): # 带 *,tuple print(i) # ('f', 'f', 'f') # ('l', 'l', 'l') # ('s', 's', 'p') # ('s', 'd', 'p') ### 可迭代对象的元素必须可迭代 for i in zip(*('abc', [1, 2, 3])): # 可迭代对象中的元素必须可迭代 print(i) # ('a', 1) # ('b', 2) # ('c', 3) for i in zip(*[1, 2, 3]): # TypeError: zip argument #1 must support iteration 不可迭代报错 print(i)
参考资料:
https://www.runoob.com/python3/python3-func-zip.html Python3 zip() 函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)