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]]

相关文章