LeetCode:867. Transpose Matrix - Python

问题描述:

转置矩阵

给定一个矩阵 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 <= A.length <= 1000,    1 <= A[0].length <= 1000

问题分析:

这问题让我想到了48题,应该非常简单,或者说都没必要在这里写,我主要的目的是总结一下Python中的 zip 的用法哈。

Python3实现:

# @Time   :2018/7/9
# @Author :LiuYinxing


class Solution:
    def transpose(self, A):  # 方法一
        A[::] = zip(*A)
        return A
    
    def transpose1(self, A):  # 方法二
        if len(A) == 0: return []
        r, c = len(A), len(A[0])
        return [[A[i][j] for i in range(r)] for j in range(c)]


if __name__ == '__main__':
    solu = Solution()
    A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    print(solu.transpose(A))

Python zip 总结:

(1)zip(): 相当于压缩,简单理解就是,把长度相等的几列数据,压缩成一个矩阵,变成按行储存。例如:

x = ['1', '2', '3']
y = ['a', 'b', 'c']
z = list(zip(x, y))
print(z)  # [('1', 'a'), ('2', 'b'), ('3', 'c')]

(2)zip(*):相当于解压,简单理解就是,把一个矩阵本来是一行一行的储存的,现在解压成一列一列的储存,相当于矩阵转置。例如:

x = [['1', 'a'], ['2', 'b'], ['3', 'c']]
z = list(zip(*x))
print(z)  # [('1', '2', '3'), ('a', 'b', 'c')]

注意:如果要直接输出,zip()内容要经过 list() 之后才能显示出来。

欢迎指正哦。

猜你喜欢

转载自blog.csdn.net/xx_123_1_rj/article/details/80978676
今日推荐