1 list01=[1,2,3,4] 2 list02=["a","b","c","d"] 3 4 for itme in zip(list01,list02): 5 print(list(itme))
结果:
[1, 'a']
[2, 'b']
[3, 'c']
[4, 'd']
zip最简单的用法“列对接”我们可以看到zip可以将列与列组合在一起
我在学习一些如2048等项目的时候会用到矩阵转至思想的,但没有zip的时候是很痛苦的,当有了zip的时候我们就可以这样做:
list01=[ [1,2,3,4], [5,6,7,8], [9,8,7,4], [1,5,8,7] ] list02=[] for itme in zip(list01[0],list01[1],list01[2],list01[3]): list02.append(list(itme)) print(list02)
结果:
[[1, 5, 9, 1], [2, 6, 8, 5], [3, 7, 7, 8], [4, 8, 4, 7]]
这样就将之前的13行矩阵转至代码简化为3行:但这样写也是不够灵活,当我们增加一行数据时代码有又需要改动:
list01=[ [1,2,3,4], [5,6,7,8], [9,8,7,4], [1,5,8,7], [7,4,5,6] ] list02=[] for itme in zip(list01[0],list01[1],list01[2],list01[3],list01[4]): list02.append(list(itme)) print(list02)
有的同学会想到可变量参数化,这样也是不可取的,这样做代码有将变得臃肿,我们不如用拆包和装包的思想:
list01=[ [1,2,3,4], [5,6,7,8], [9,8,7,4], [1,5,8,7], [7,4,5,6] ] list02=[] for itme in zip(*list01): list02.append(list(itme)) print(list02)
当到这一步的时候我们就可以用Python的特色-----列表推导式
list01=[ [1,2,3,4], [5,6,7,8], [9,8,7,4], [1,5,8,7] ] list02=[list(itme) for itme in zip(*list01)]
print(list02)
结果:
[[1, 5, 9, 1], [2, 6, 8, 5], [3, 7, 7, 8], [4, 8, 4, 7]]