题目

输入一个 m×n 的二维矩阵,计算其转置矩阵(行列互换)并按行输出转置后的矩阵。

输入格式:第一行输入行数 m 和列数 n;接下来 m 行每行包含 n 个整数。

输出格式:输出 n 行,每行包含 m 个整数,以空格分隔。

数据范围与约定:1 ≤ m, n ≤ 50。

思路与算法

1. 转置行列互换
原矩阵中第 i 行第 j 列的元素对应转置后第 j 行第 i 列。

2. Python zip 转置技巧
利用 zip(*matrix) 可一行优雅完成矩阵转置。

完整程序

m, n = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(m)]

# 双重循环输出矩阵转置
for j in range(n):
    print(" ".join(str(a[i][j]) for i in range(m)))

运行示例

输入:

2 3
1 2 3
4 5 6

输出:

1 4
2 5
3 6

其它写法

下面每种写法都是完整程序,输入输出格式与正文一致,便于对照。

zip 转置

适用于任意 m×n;正文双重循环同样正确。

程序:

#!/usr/bin/python3
# coding=utf-8

m, n = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(m)]
for row in zip(*a):
    print(" ".join(map(str, row)))

输入:

2 3
1 2 3
4 5 6

输出:

1 4
2 5
3 6