原来的代码:
(只能实现方阵的转置功能)
a=eval(input("Please input a list:"))
print('转置前:')
for i in range(len(a)):
print(a[i])
for i in range(len(a)):
for j in range(0,i):
a[i][j],a[j][i]=a[j][i],a[i][j]
print('转置后:')
for i in range(len(a)):
print(a[i])
修改后的代码适合行列数不一样的矩阵:
(因为行列数不一样的矩阵直接使用原来的代码的话,会出现下标越界,所以需要重新创建空列表放入转置后的矩阵)
# 获取矩阵
a = eval(input("Please input a list:"))
# 检查输入是否为二维数组且每行长度一致
m = len(a)
if m == 0:
print("Empty matrix")
exit()
n = len(a[0])
for row in a:
if len(row) != n:
print("Invalid matrix format")
exit()
# 计算转置矩阵的行列数
transposed_m = n
transposed_n = m
# 创建转置后的矩阵
transposed_a = []
for j in range(transposed_m):
new_row = []
for i in range(transposed_n):
new_row.append(a[i][j])
transposed_a.append(new_row)
# 打印结果
print('转置前:')
for row in a:
print(row)
print('\n转置后:')
for row in transposed_a:
print(row)