• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

zip矩阵转至

开发技术 开发技术 3周前 (06-20) 20次浏览
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]]

 


程序员灯塔 , 版权所有
转载请注明原文链接:https://www.wangt.cc/2020/06/zip%e7%9f%a9%e9%98%b5%e8%bd%ac%e8%87%b3/
喜欢 (0)