You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中将矩阵参数直接赋值给变量后转置结果出错是什么原因?

核心错误原因
  • new_matrix = m本质是对象引用绑定,二者指向内存中同一个二维列表,修改new_matrix的元素时,原矩阵m的元素也会同步被修改
  • 循环赋值过程中,你读取的m[k][i]已经是前面步骤修改后的错误值,而非最初输入的原始矩阵值,所以最终转置结果不符合预期
适配任意n×n矩阵的解决方案

你不需要提前预设矩阵大小,可通过输入矩阵的维度动态生成独立的新矩阵,示例实现如下:

def transpose(m):
    n = len(m)
    # 列表推导式生成独立的同尺寸新矩阵,避免和原矩阵共享内存
    new_matrix = [[0 for _ in range(n)] for _ in range(n)]
    for i in range(n):
        for k in range(n):
            new_matrix[i][k] = m[k][i]
    return new_matrix

注意:不要使用[[0]*n]*n的写法生成新矩阵,该写法会让所有行引用同一个列表对象,修改任意一行的元素都会同步修改所有行,同样会导致逻辑错误。

如果需要更简洁的实现,可以直接用Python内置的zip函数完成转置,该写法还支持非方阵的转置操作:

def transpose(m):
    return [list(row) for row in zip(*m)]

内容的提问来源于stack exchange,提问作者Jackie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:24:04