python - 我怎样才能通过一个函数保存我的参数值,以便它可以使用它的初始值多次使用?

标签 python sage

我刚刚开始使用 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 中的每个项目以创建一个新列表。但是列表中的可变对象不会被复制

>>> 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

关于python - 我怎样才能通过一个函数保存我的参数值,以便它可以使用它的初始值多次使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36556576/

相关文章:

python - 当我在主窗口中调用其他 QtWidget 时,我的 GUI 不起作用(按钮等)

python - 将大型数据帧插值到稀疏、不规则的索引上

python - 不同车速的车辆路线(Google OR工具)

python - Sage 笔记本服务器发布/获取

python - 如何在 sage 中精确获取小数点后 2 位数字

python - 在 Django 的 Case When 表达式中使用多个条件

python - 捕获 boto3 ClientError 子类

python - python 上的重复项列表

python - iPython:类似操作的命令

python - 如何通过 Python 中的 Sagemath 库理解可疑的语法应用