Python zip Python zip函数
zip([iterable, ...])
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。
若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)。
一,把list使用zip创建一个元组对的列表
list1 = [1,2,3,4] list2 = [5,6,7,8] print zip(list1,list2) #输出结果是 [(1, 5), (2, 6), (3, 7), (4, 8)]
二:利用for循环支持并行迭代
list1 = [1,2,3,4] list2 = [5,6,7,8] for (x,y) in zip(list1,list2): print (x,y, "==",x+y) # 输出结果是: # (1, 5, '==', 6) #(2, 6, '==', 8) #(3, 7, '==', 10) #(4, 8, '==', 12)
三:把字符串转换为元组的列表
当两个字符串的长度不同时,zip会以最短序列的长度为准来截断所得到的元组 列表
str1 = "abcd" str2 = "123456" print zip(str1,str2)
输出结果是:[('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]
四:把元组转换为元组的列表
t1 = (1,2,3) t2 = (4,5,6) t3 = (7,8,9) print list(zip(t1,t2,t3))
输出结果是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
五:使用zip构造字典
方法一:使用for循环
k = ["a","b","c"] v = ["1","2","3"] d2 = {} for (k,v) in zip(k,v):d2[k]=v print d2
方法er:使用dict
k = ["a","b","c"] v = ["1","2","3"] d3 = dict(zip(k,v)) print d3
方法一和方法二的输入结果都是 {'a': '1', 'c': '3', 'b': '2'}
六:矩阵的行列互换
第一种方法
有一个由列表描述的二维矩阵 a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
通过python列表推导的方法,我们也能轻易完成这个任务
print [ [row[col] for row in a] for col in range(len(a[0]))]
输出结果是:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
第二种方法:
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print zip(*a) 输出结果是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)] print map(list,zip(*a)) 输出结果是:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
这种方法速度更快但也更难以理解,将list看成tuple解压,恰好得到我们“行列互换”的效果,再通过对每个元素应用list()函数,将tuple转换为list
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头
分类:
python
标签:
Python zip
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术