Transpose of a Matrix(矩阵的转置)
题目链接:
Transpose of a Matrix(矩阵的转置)
https://www.deep-ml.com/problems/2
题目描述:
难度:
easy(简单)。
分类:
Linear Algebra(线性代数)。
题目:
编写一个 Python 函数来计算给定矩阵的转置。
示例:

解释:
矩阵的转置。
让我们考虑一个矩阵 M 及其转置矩阵 M^T:
原始矩阵 M:

转置矩阵M^T:

解释:
矩阵转置涉及将其行转换为列,反之亦然。此操作在线性代数中对于各种计算和变换是基础的。
题目解析:
题解如下:
def transpose_matrix(a: list[list[int|float]]) -> list[list[int|float]]:
return [list(col) for col in zip(*a)]
代码解释:
1. 函数定义部分
def transpose_matrix(a: list[list[int | float]]) -> list[list[int | float]]:
-
功能:定义一个名为
transpose_matrix的函数,用于计算矩阵的转置。 -
参数:
a: list[list[int | float]]表示输入参数a是一个二维列表,内部元素为整数(int)或浮点数(float)。 -
返回值:
-> list[list[int | float]]表示函数最终会返回一个二维列表,结构与输入类似,元素类型也为整数或浮点数。
2. 核心转置逻辑
return [list(col) for col in zip(*a)]
-
zip(*a)的作用:-
*a是解包操作,将矩阵a的每一行作为独立参数传入zip。例如,输入a = [[1,2,3], [4,5,6]],*a会解包为[1,2,3]和[4,5,6]。 -
zip函数会将传入的行数据按列聚合,生成元组。对于示例输入,zip(*a)会得到(1,4),(2,5),(3,6),即原矩阵的列变成了新的行。
-
-
列表推导式
[list(col) for col in zip(*a)]:-
zip(*a)生成的是元组,而题目要求输出列表。因此通过list(col)将每个元组(如(1,4))转换为列表(如[1,4]),最终组合成转置后的矩阵。
-
注释版本:
def transpose_matrix(a: list[list[int | float]]) -> list[list[int | float]]:
# 利用 zip(*a) 对矩阵进行转置操作
# zip(*a) 会将矩阵的列转换为元组
# 接着使用列表推导式将每个元组转换为列表
return [list(col) for col in zip(*a)]
思考总结:
-
问题分析:矩阵转置的核心是交换行与列,即将原矩阵的第 i 行变为转置后矩阵的第 i 列。例如,输入矩阵 [[1,2,3],[4,5,6]],转置后需将第一行的 1,2,3 和第二行的 4,5,6 转换为新矩阵的列。
-
Python 实现思路:
-
利用
zip(*a)完成行列交换。*a解包矩阵的行,zip按列聚合元素,生成元组(如(1,4),(2,5),(3,6))。 -
由于题目要求输出列表,使用列表推导式
[list(col) for col in ...]将元组转换为列表,满足最终格式。
-
-
关键步骤:
-
函数定义时明确输入输出类型,确保代码规范性。
-
通过
zip(*a)高效实现转置逻辑,这是 Python 处理矩阵转置的简洁方法。 -
最后添加测试代码,验证函数功能,确保输入示例能正确输出转置结果。
-
-
总结:该解法利用 Python 内置函数的特性,简洁实现矩阵转置,核心在于理解
zip(*a)的行列转换机制,以及数据类型的适配处理。

















