为了理解为什么我在一个程序中遇到错误,在这个程序中我试图找到一个行列式的“次要”,我写了一个更简单的程序,因为我的变量被搞砸了。下面的这个函数将一个 2 * 2 矩阵作为输入,并返回一个包含其行的列表(我知道毫无意义且效率低下,但我试图理解这背后的理论)。
def alpha(A): #where A will be a 2 * 2 matrix
B = A #the only purpose of B is to store the initial value of A, to retrieve it later
mylist = []
for i in range(2):
for j in range(2):
del A[i][j]
array.append(A)
A = B
return mylist
但是,这里似乎 B 被 动态 分配了 A 的值,因为我无法将 A 的初始值存储在 B 中以供以后使用。这是为什么?
原文由 Sphener 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为 python 通过引用传递列表
这意味着当你写“b=a”时,你是在说 a 和 b 是同一个对象,当你改变 b 时,你也改变了 a,反之亦然
一种按值复制列表的方法:
如果列表包含对象并且您也想复制它们,请使用通用的 copy.deepcopy():