You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何访问列表特定整数并添加到新列表以实现矩阵转置

Python二维列表转置实现方法

核心逻辑

二维列表(矩阵)转置的核心是将原矩阵第i行第j列的元素,映射到转置矩阵的第j行第i列位置。你要做的就是先遍历原矩阵的列索引,再按列收集所有行对应位置的元素,每一列收集的结果就是转置矩阵的一行。

基础实现(适合理解逻辑)

这种写法完全手动遍历元素,没有依赖额外内置方法,适合初学者理清访问逻辑:

def mat_transpose(mat):
    # 处理空矩阵的边界情况
    if not mat or not mat[0]:
        return []
    # 原矩阵的行数、列数
    origin_rows = len(mat)
    origin_cols = len(mat[0])
    transpose_mat = []
    # 外层循环遍历原矩阵的每一列,对应转置后的每一行
    for col_idx in range(origin_cols):
        new_row = []
        # 内层循环遍历原矩阵的每一行,取当前列的元素
        for row_idx in range(origin_rows):
            # 这里就是目标元素的访问方式:第row_idx行第col_idx列的元素
            new_row.append(mat[row_idx][col_idx])
        transpose_mat.append(new_row)
    return transpose_mat

测试代码和你给出的示例一致,运行后可以得到预期输出:

mat = [[1,2],[3,4],[5,6]]
mat_T = mat_transpose(mat)
print(mat)
# [[1, 2], [3, 4], [5, 6]]
print(mat_T)
# [[1, 3, 5], [2, 4, 6]]  

该逻辑适用于任意规整二维列表(所有子列表长度一致),不管行数、列数多少都可以正常转置。

简便实现(Python内置方法)

可以用Python内置的zip函数快速完成转置,代码更简洁:

def mat_transpose(mat):
    if not mat or not mat[0]:
        return []
    # *mat 会把原列表的所有子列表解包为zip的入参
    # zip会按位置聚合所有入参的对应元素,刚好就是转置后的行
    return [list(row) for row in zip(*mat)]

内容的提问来源于stack exchange,提问作者sds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:45:01