zoukankan      html  css  js  c++  java
  • LeetCode(867)


    title: LeetCode(867)
    tags:

    • Python
    • Algorithm

    题目描述

    给定一个矩阵 A, 返回 A 的转置矩阵。

    矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。

    示例 1:

    输入:[[1,2,3],[4,5,6],[7,8,9]]
    输出:[[1,4,7],[2,5,8],[3,6,9]]
    

    示例 2:

    输入:[[1,2,3],[4,5,6]]
    输出:[[1,4],[2,5],[3,6]]
    

    提示:

    1. 1 <= A.length <= 1000
    2. 1 <= A[0].length <= 1000

    解决方案

    1.常规复制

    class Solution:
        def transpose(self, A):
            """
            此方法的本质就是ans[c][r] = A[r][c]
            :type A: List[List[int]]
            :rtype: List[List[int]]
            """
            # R——A的长度,C——数组的长度
            R,C =len(A),len(A[0])
            ans = [[None]*R for _ in range(C)]
            # ans  [[None, None, None], [None, None, None], [None, None, None]]
            for r,row in enumerate(A):
                for c,val in enumerate(row):
                    ans[c][r]= val
            return ans
    
    def main():
        s  =Solution()
        b = s.transpose([[1,2,3],[4,5,6],[7,8,9]])
        print(b)
        #[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
    
    if __name__ == "__main__":
        main()
    

    2.zip函数一行搞定

    class Solution:
        def transpose(self, A):
            """
            :type A: List[List[int]]
            :rtype: List[List[int]]
            """
           
            return list(zip(*A))
    
    def main():
        s  =Solution()
        b = s.transpose([[1,2,3],[4,5,6],[7,8,9]])
        print(b)
        #[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
    
    if __name__ == "__main__":
        main()
    

    补充:zip函数的用法

    描述

    zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

    我们可以使用 list() 转换来输出列表。

    如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

    实例
    >>>a = [1,2,3]
    >>> b = [4,5,6]
    >>> c = [4,5,6,7,8]
    >>> zipped = zip(a,b)     # 返回一个对象
    >>> zipped
    <zip object at 0x103abc288>
    >>> list(zipped)  # list() 转换为列表
    [(1, 4), (2, 5), (3, 6)]
    >>> list(zip(a,c))              # 元素个数与最短的列表一致
    [(1, 4), (2, 5), (3, 6)]
     
    >>> a1, a2 = zip(*zip(a,b))          # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
    >>> list(a1)
    [1, 2, 3]
    >>> list(a2)
    [4, 5, 6]
    >>>
    
  • 相关阅读:
    Js使用WScript.Shell对象执行.bat文件和cmd命令
    wscript运行js文件
    Linux基础tree命令
    使用libssh2库实现支持密码参数的ssh2客户端
    zlib库剖析(1):实现概览
    Linux设置编译器环境变量
    开源的zip_unzip库
    黑客入门之单机游戏外挂
    linux定时任务的设置 crontab 配置指南
    Linux crontab定时执行任务 命令格式与详细例子
  • 原文地址:https://www.cnblogs.com/huang-yc/p/10258838.html
Copyright © 2011-2022 走看看