• zip矩阵转至


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

  • 相关阅读:
    webpack 配置缓存
    Python-----多线程threading用法
    LINUX 编程定位工具gstack,pstack
    数据库session立即生效(64---8192) SCOPE参数
    shell中wait命令详解
    Go语言学习笔记
    使用go语言数据库
    Oracle数据库管理----性能优化
    数据库索引实例
    Linux串口设置及编程(转)
  • 原文地址:https://www.cnblogs.com/yongqi-wang/p/13167991.html
Copyright © 2020-2023  润新知