Python不使用numpy实现元组格式的方阵与矩形矩阵转置
转置函数调整方案
你只需要将原代码中列表类型的中间结果和最终返回值转换为元组即可,调整后的代码如下:
def transpose(matrix): rows = len(matrix) columns = len(matrix[0]) matrix_T = [] for j in range(columns): row = [] for i in range(rows): row.append(matrix[i][j]) matrix_T.append(tuple(row)) return tuple(matrix_T)
修改说明
- 内层每行转置的结果从列表转为元组后再存入结果集
- 最终返回前将外层的结果列表转为元组,最终输出为元组嵌套元组的格式,同时兼容方阵、m行n列矩形矩阵的转置需求
更简洁的原生实现
你也可以直接用Python内置的zip函数实现,代码更精简,执行效率更高:
def transpose(matrix): return tuple(zip(*matrix))
实现逻辑
*matrix是解包操作,将矩阵的每一行作为独立参数传入zipzip会按位置依次拼接每个输入行的对应元素,生成的每一个元素本身就是元组,正好对应转置后的每一行- 最后将
zip返回的迭代器转为元组,即可得到符合要求的输出
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

