题目:编写程序,实现方阵的转置功能

79 阅读1分钟

原来的代码:

(只能实现方阵的转置功能)

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)