在使“结果”矩阵=输入矩阵时,NxN矩阵转置给出错误答案
新手程序员。我正在尝试转置NxN矩阵。把代码放在这里是为了把问题弄清楚:
def flippingMatrix(matrix):
result=[[0 for i in range(len(matrix))] for j in range(len(matrix))]
for i in result:
print(i)
for i in range(len(matrix)):
for j in range(len(matrix)):
result[j][i]=matrix[i][j]
for i in result:
print(i)
# //Main Program//
n = int(input().strip())
matrix = []
for i in range(n):
matrix.append(list(map(int, input().rstrip().split())))
result = flippingMatrix(matrix)
现在,如果我们运行这个程序,我们输入'N',它是否。行和列的集合。在下一行中,元素进入矩阵。这是我给出的输入:2
1 2
3 4
输出:
[0, 0] //This is the result matrix that I made//
[0, 0]
[1, 3] //The final result matrix//
[2, 4]
问题来了:如果,我将
"result=matrix"
而不是
result=[[0 for i in range(len(matrix))] for j in range(len(matrix))]
我回答错了。我假设我们需要一个结果矩阵作为NxN矩阵的布局。那么为什么使结果与输入相同会给出错误的答案呢?无论如何,它将被覆盖。
使用与前面相同的输入,我得到以下输出:
[1, 2] //Initial result matrix which is the copied input matrix//
[3, 4]
[1, 2] //The final result matrix//
[2, 4]
如果问题有点不清楚,我很抱歉,我已经尽力了。如果任何人需要进一步的解释,评论这个帖子,我会尽量解释我的问题
1条答案
按热度按时间f1tvaqid1#
你的函数应该有一个return,如果你在它的作用域内赋值
matrix=result
,这不会传播到函数之外,它只是一个引用/指针赋值。不复制每个矩阵的值。尝试:
此处测试n = 3: