首页 > 解决方案 > 交换列表的功能正在更改迭代内的内容

问题描述

我对 Python 还很陌生,我正在尝试编写一段非常简单的代码。我已经定义了两个矩阵(列表列表),A 和 B,以及一个函数,该函数根据一些称为索引的指标变量将矩阵 A 的列替换为矩阵 B 的列。我还添加了一些用于调试的打印语句。

A = [[5,-5,5],[7,7,7],[-6,-6,6]]
B = [[2,2,-1],[-1,2,4],[0,-4,3]]
index = [1,2]

def Matrix_Interchange(A,B,index):
    print("Value of A Inputed",A)
    Temp = A
    for i in index:
        Temp[i-1][:]=B[i-1][:]
        print("Value of A in For Loop",A)
    return(Temp)

Matrix_Interchange(A,B,index)
print(A)

我遇到的问题是,一旦代码进入函数内部的for循环,它就会改变矩阵A的值。如果我不再引用A而是引用新的矩阵Temp,为什么会这样做?

这是我包含以帮助我调试的打印语句的输出。我在这里遗漏了一些明显的东西吗?

Value of A Inputed [[5, -5, 5], [7, 7, 7], [-6, -6, 6]]
Value of A in For Loop [[2, 2, -1], [7, 7, 7], [-6, -6, 6]]
Value of A in For Loop [[2, 2, -1], [-1, 2, 4], [-6, -6, 6]]

标签: pythonlistmatrixcopydeep-copy

解决方案


推荐阅读