鱼C论坛

 找回密码
 立即注册
查看: 370|回复: 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)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

以下是实现矩阵转置的正确方法:

  1. matrix = [
  2.     [1, 2, 3, 4],
  3.     [5, 6, 7, 8],
  4.     [9, 10, 11, 12]
  5. ]

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

  8. print(Tmatrix)
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-16 21:41:45 | 显示全部楼层
本帖最后由 jackz007 于 2024-11-17 11:13 编辑
  1. matrix = [[1, 2, 3, 4],
  2.           [5, 6, 7, 8],
  3.           [9, 10, 11, 12]]
  4. Lmatrix = [[matrix[col][-1 - row] for col in range(len(matrix))] for row in range(len(matrix[0]))]
  5. Rmatrix = [[matrix[-1 - col][row] for col in range(len(matrix))] for row in range(len(matrix[0]))]
  6. for x in matrix : print(*x)
  7. print()
  8. for x in Lmatrix : print(*x)
  9. print()
  10. for x in Rmatrix : print(*x)
复制代码

        运行实况:
  1. D:\[exercise]\Python>python x.py
  2. 1 2 3 4
  3. 5 6 7 8
  4. 9 10 11 12

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

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

  13. D:\[exercise]\Python>
复制代码
小甲鱼最新课程 -> https://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')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-8 05:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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