鱼C论坛

 找回密码
 立即注册
查看: 122|回复: 1

小白求解答一个关于矩阵转置的问题

[复制链接]
发表于 2024-10-13 18:01:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Tmatrix = [[[]]*3]*4
print(Tmatrix)
for i in range(4):
    for m in range(3):
        Tmatrix[i][m] = matrix[m][i]
        print(Tmatrix)
print(Tmatrix)
这样写为什么不能得到矩阵转置的结果


打印出来这样的结果....
[[[], [], []], [[], [], []], [[], [], []], [[], [], []]]
[[1, [], []], [1, [], []], [1, [], []], [1, [], []]]
[[1, 5, []], [1, 5, []], [1, 5, []], [1, 5, []]]
[[1, 5, 9], [1, 5, 9], [1, 5, 9], [1, 5, 9]]
[[2, 5, 9], [2, 5, 9], [2, 5, 9], [2, 5, 9]]
[[2, 6, 9], [2, 6, 9], [2, 6, 9], [2, 6, 9]]
[[2, 6, 10], [2, 6, 10], [2, 6, 10], [2, 6, 10]]
[[3, 6, 10], [3, 6, 10], [3, 6, 10], [3, 6, 10]]
[[3, 7, 10], [3, 7, 10], [3, 7, 10], [3, 7, 10]]
[[3, 7, 11], [3, 7, 11], [3, 7, 11], [3, 7, 11]]
[[4, 7, 11], [4, 7, 11], [4, 7, 11], [4, 7, 11]]
[[4, 8, 11], [4, 8, 11], [4, 8, 11], [4, 8, 11]]
[[4, 8, 12], [4, 8, 12], [4, 8, 12], [4, 8, 12]]
[[4, 8, 12], [4, 8, 12], [4, 8, 12], [4, 8, 12]]

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-13 18:01:52 | 显示全部楼层
你的代码的问题主要有以下几点:

1. **初始化问题**:`Tmatrix = [[]*3]*4` 的初始化方式是错误的。`[[]*3]*4` 并不能创建一个正确的矩阵。实际上,它创建的是四个指向同一个列表的引用,修改其中一个会使所有行都改变。

2. **赋值问题**:在循环内,`Tmatrix = matrix` 并不会更新 `Tmatrix`。你只是在循环中不断给 `Tmatrix` 赋同一个值。

要正确地实现矩阵转置,可以这样做:
# 假设 matrix 是一个 4x3 的矩阵
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
    [10, 11, 12]
]

# 创建一个 3x4 的空列表用来存储转置后的矩阵
Tmatrix = [[0]*4 for _ in range(3)]

for i in range(4):
    for j in range(3):
        Tmatrix[j][i] = matrix[i][j]  # 交换行列索引

# 打印转置后的矩阵
for row in Tmatrix:
    print(row)

这样,`Tmatrix` 就是 `matrix` 的转置矩阵,即将原矩阵的行和列进行互换。希望这个方法对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 13:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表