Python构建二维数组的不同方法及出现的问题

项目场景:

Leetcode上面的一个简单题:

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

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

问题描述:

实现转置后的结果是最后一次外层for循环得到的结果:

class Solution:
    def transpose(self, A: List[List[int]]) -> List[List[int]]:
    #A = [[1,2,3],[4,5,6],[7,8,9]]
        r_A = [[None]*len(A)]*len(A[0])
        for i in range(len(A)):
            for j in range(len(A[0])):
                r_A[j][i] = A[i][j]
        return r_A

运行结果:

[[3,6,9],[3,6,9],[3,6,9]]

原因分析:

r_A = [[None]*len(A)]*len(A[0])

在建立多维数组的时候,上面这个代码所构建的多维数组代表的是:len(A[0])r_A = [[None] * len(A)]的一维数组。所以在你改变 r_A[0][0]的时候,相当于把r_A[1][0],r_A[2][0]…都改变了!

解决方案:

r_A = [[None] * len(A) for _ in range(len(A[0]))]

使用一个for循环来建立一个完整的二维数组,使得它是一个整体。

class Solution:
    def transpose(self, A: List[List[int]]) -> List[List[int]]:
    #A = [[1,2,3],[4,5,6],[7,8,9]]
        r_A = [[None] * len(A) for _ in range(len(A[0]))]
        for i in range(len(A)):
            for j in range(len(A[0])):
                r_A[j][i] = A[i][j]
        return r_A

运行结果:

[[1,4,7],[2,5,8],[3,6,9]]
Numpy构建数组:
from numpy import *
m1 = array([arange(1,4),arange(4,7)])  
return m1

运行结果:

[[1,2,3],[4,5,6]]

("如果你来不及认真的年轻,待明天过去了,那只能努力做到认真的老去。 FIGHTING…")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值