当前位置: 首页 > 面试题库 >

复制的变量会更改原来的吗?

宗政安歌
2023-03-14
问题内容

我在Python中有一个非常非常奇怪的简单问题。

def estExt(matriz,erro):
    # (1) Determinar o vector X das soluções
    print ("Matrix after:");
    print(matriz);

    aux=matriz;
    x=solucoes(aux); # IF aux is a copy of matrix, why the matrix is changed??

    print ("Matrix before: ");
    print(matriz)

...

如下所示,matriz尽管矩阵是aux由function改变的,但矩阵还是被改变了solucoes()

之前的矩阵:
[[7, 8, 9, 24], [8, 9, 10, 27], [9, 10, 8, 27]]

之后的矩阵:
[[7, 8, 9, 24], [0.0, -0.14285714285714235, -0.2857142857142847, -0.42857142857142705], [0.0, 0.0, -3.0, -3.0000000000000018]]


问题答案:

线

aux=matriz;

不会复制matriz,而只是创建对matriznamed的新引用aux。你可能想要

aux=matriz[:]

假设matriz是简单的数据结构,它将进行复制。如果比较复杂,则应使用copy.deepcopy

aux = copy.deepcopy(matriz)

顺便说一句,您不需要在每个语句后使用分号,python不会将它们用作EOL标记。



 类似资料:
  • 问题内容: 我有一个清单,我创建了一个清单以进行一些操作,同时仍保留原始清单。但是,当我设置copy_list等于时,它们将变为同一事物,并且如果我更改,它们也会更改。例如: 退货 我对实际发生的事情不太了解,但看起来org_list实际上是将自身传递给copy_list他们,因此它们实际上是同一回事。 有没有一种方法可以制作org_list的独立副本,而又不需要做一些笨拙的事情: 我之所以这样说

  • 问题内容: 第一个System.out打印 2 并且应该打印,而第二个System打印 65 。我已经用这种语言编程了一年多了,据我所知这是不可能发生的!有什么帮助吗? 上面的代码在两行上都显示 9 。 问题答案: 当你这样做,之前仅仅是一个参考阵列, NO 新阵列已创建并分配给。因此,当您查看自己的价值时,基本上就是查看的价值,反之亦然。只是的别名。这就是为什么在第二张照片中您得到65。 检查该

  • 问题内容: 我有一个测试用例,可以访问浏览器并对其进行处理。但是我需要以编程方式更改某些文本框的输入内容。我有8个字符串和一个布尔值,表示测试需要正确运行。问题是,您必须先通过ant和构建过程运行测试用例,然后才能实际运行它。我希望能够构建它,将其放在设备上,然后在我调用它时以某种方式将数据传递给设备。但是我不知道那是否可能。我目前唯一想到的选择是编写一个快速的Java程序,将其写入文件,更改变量

  • 问题内容: 我了解的这段代码。我们复制A并将其称为C。当A更改时,C保持不变 但是当A是一个数组时,我们会有不同的情景。C不仅会改变,而且甚至在我们碰到A之前都会改变 有人可以解释第二个示例中发生的情况吗? 问题答案: Pointy的答案有很好的信息,但这不是此问题的正确答案。 OP所描述的行为是一个错误的一部分,该错误于2010年3月首次报告,并于2012年8月为Webkit进行了修补,但截至本

  • 制作者或管理员创建了Kafka主题后,如何更改该主题的副本数?

  • 考虑: 为什么改变的值会改变的值?