题目
输入一个 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