我的代码执行以下操作,它读取N * N矩阵文件,例如我的matrix.txt文件是
2 3 4
1 2 6
9 8 9
并将其转换为列表整数[[2,3,4],[1,2,6],[9,8,9]]
其中 然后通过在翻转时将内部值移动到索引的值来转换内部值。例如。 [1] [0] = 1,所以list [0] [1]的值应该从3变为1.而[1] [0]的值从1变为3。
这使得转换矩阵后的最终输出应该变为
翻转所有值后,[[2,1,9],[3,2,8],[4,6,9]]。
请记住,如果索引在[0] [0]或[1] [1]或[2] [2]中相同,则不会发生任何事情。
以下是我的代码,我无法得到最终输出,因为我认为我的交换算法存在问题,任何帮助都表示赞赏。
file =(input("Enter the filename: "))
f = open(file)
matrix = []
for line in f:
line = line.strip()
line = line.split()
if line:
for x in range(len(line)):
line[x] = int(line[x])
matrix.append(line)
transpose = []
for x in range(len(matrix)):
transpose.append([])
bob = transpose[x]
for y in range(len(bob)):
temp = 0
temp = matrix[x][bob[y]]
matrix[x][bob[y]] = matrix[y][bob[x]]
matrix[y][bob[x]] = temp
print(matrix)
print(transpose)
答案 0 :(得分:0)
仅供参考,这可以很容易地由zip()
函数替换。传入3个单独的数组(列表[0],列表[1],列表[2])并压缩它们将基本上按列重新排列元素。所以[[2 3 4],[1 2 6],[9 8 9]]变成[[2 1 9],[3 2 8],[4 6 9]]。
>>> lista = [2,3,4]
>>> listb = [1,2,6]
>>> listc = [9,8,9]
>>> new = zip(lista, listb, listc)
>>> for row in new:
... print(row)
(2, 1, 9)
(3, 2, 8)
(4, 6, 9)
答案 1 :(得分:0)
使用zip()
>>> list(zip(*matrix))
[(2, 1, 9), (3, 2, 8), (4, 6, 9)]
>>>
答案 2 :(得分:-1)
其他更多传统方法可以找到here,尤其是使用嵌套循环的矩阵转置。