鱼C论坛

 找回密码
 立即注册
查看: 103|回复: 3

列表推导式相关,求矩阵转置哪里有问题

[复制链接]
发表于 2024-11-16 20:00:57 | 显示全部楼层 |阅读模式

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

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

x
matrix = [[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]]
Tmatrix = [matrix[col][row] for row in matrix for col in range(4)]
print(Tmatrix)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-16 20:01:04 | 显示全部楼层
在你的代码中,列表推导式的结构不正确,或许这里有一些误解。要实现矩阵的转置,我们需要交换矩阵的行和列。假设矩阵是一个二维列表,首先我们要确保传入的是一个有效的矩阵。

以下是实现矩阵转置的正确方法:
matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]

# 获取矩阵的转置
Tmatrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]

print(Tmatrix)

这样,`Tmatrix` 会是矩阵 `matrix` 的转置。即,对于原矩阵的每一列生成新的行。这种方式适用于任何非空矩阵。

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

使用道具 举报

发表于 2024-11-16 21:41:45 | 显示全部楼层
本帖最后由 jackz007 于 2024-11-17 11:13 编辑
matrix = [[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]]
Lmatrix = [[matrix[col][-1 - row] for col in range(len(matrix))] for row in range(len(matrix[0]))]
Rmatrix = [[matrix[-1 - col][row] for col in range(len(matrix))] for row in range(len(matrix[0]))]
for x in matrix : print(*x)
print()
for x in Lmatrix : print(*x)
print()
for x in Rmatrix : print(*x)
        运行实况:
D:\[exercise]\Python>python x.py
1 2 3 4
5 6 7 8
9 10 11 12

4 8 12
3 7 11
2 6 10
1 5 9

9 5 1
10 6 2
11 7 3
12 8 4

D:\[exercise]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-17 13:21:55 | 显示全部楼层
matrix = [[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]]
Tmatrix = list(zip(*matrix))
print(*Tmatrix, sep='\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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