我刚刚开始使用SAGE,据我所知,它与python非常接近,并且遇到了这个问题,在该问题中,我希望将矩阵作为函数的参数,并希望在函数中使用相同的矩阵多次原始功能,但通过功能的不同部分可以更改值。
我在一个教程中看到,在函数中声明一个变量variable = list(parameter)
不会影响参数或括号中的内容。不过,我不能让它工作..下面是我的程序冒充的问题(如果必要的话,我可以添加其他部分)的一部分:我声明变量determinant
具有作为价值函数的结果my_Gauss_determinant
与变量auxmmatrix
作为参数。通过函数my_Gauss_determinant
值的auxmmatrix
变化,但由于某种原因其值mmatrix
也变化。如何避免这种情况并能够重新使用mmatrix
具有其原始值的参数?
def my_Cramer_solve(mmatrix,bb):
auxmmatrix=list(mmatrix)
determinant=my_Gauss_determinant(auxmmatrix)
if determinant==0:
print
k=len(auxmmatrix)
solution=[]
for l in range(k):
auxmmatrix1=my_replace_column(list(mmatrix),l,bb)
determinant1=my_Gauss_determinant(auxmmatrix1)
solution.append(determinant1/determinant0)
return solution
你想要的是一个复制的mmatrix
。之所以list(other_list)
起作用,是因为它遍历了每个条目other_list
以创建一个新列表。但是within
不会复制列表中的可变对象
>>> a = [{1,2}]
>>> b = list(a)
>>> b[0].add(7)
>>> a
[set([1,2,7])]
要制作完整副本,您可以使用copy.deepcopy
制作列表中元素的副本
>>> import copy
>>> a = [{1,2}]
>>> b = copy.deepcopy(a)
>>> b[0].add(7)
>>> a
[set([1,2])]
因此,如果您只想复制列表,而又不想复制列表中的元素,则可以这样做
auxmmatrix = copy.copy(matrix)
determinant = my_Gauss_determinant(copy.copy(matrix))
如果还要复制列表中的元素,请使用 copy.deepcopy
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句