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

python:复制变量的更改会影响原始变量

燕涵容
2023-03-14
问题内容

我有一个清单,我创建了一个清单以进行一些操作,同时仍保留原始清单。但是,当我设置copy_list等于时org_list,它们将变为同一事物,并且如果我更改copy_list,它们org_list也会更改。例如:

org_list = ['y', 'c', 'gdp', 'cap']

copy_list = org_list

copy_list.append('hum')

print(copy_list)
print(org_list)

退货

['y', 'c', 'gdp', 'cap', 'hum']
['y', 'c', 'gdp', 'cap', 'hum']

我对实际发生的事情不太了解,但看起来org_list实际上是将自身传递给copy_list他们,因此它们实际上是同一回事。

有没有一种方法可以制作org_list的独立副本,而又不需要做一些笨拙的事情:

copy_list = []
for i in org_list:
    copy_list.append(i)

我之所以这样说,是因为我对其他类型的变量(例如熊猫数据框)也存在相同的问题。


问题答案:

那是因为在python中设置变量实际上设置了对该变量的引用。几乎每个学习python的人都会在某个时候遇到这个问题。解决方案只是复制列表:

copy_list = org_list[:] 


 类似资料:
  • 问题内容: 我在Python中有一个非常非常奇怪的简单问题。 如下所示,尽管矩阵是由function改变的,但矩阵还是被改变了。 之前的矩阵: 之后的矩阵: 问题答案: 线 不会复制,而只是创建对named的新引用。你可能想要 假设是简单的数据结构,它将进行复制。如果比较复杂,则应使用 顺便说一句,您不需要在每个语句后使用分号,python不会将它们用作EOL标记。

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

  • 我是JavaFx新手,我正在尝试创建一个简单确认框类,用于确定用户是否真的想要退出。它有一个返回布尔值的函数,表示用户单击“是”或“否”: 我试着让“答案”变得不稳定,但这并没有改变任何事情。

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

  • 在研究另一个问题时,我遇到了1.8的这个有趣的行为。0_112Sun-Oracle编译器(我没有和其他人一起测试过): 编译器仅在最后一个for循环失败: 所以尽管有返回列表类型

  • 问题内容: 我总是理解静态变量在被引用时共享一个实例。我想对此进行测试,但结果与我预期的不同。 输出: 柜台:1 测试:0 由于引用我认为,当我增加那么将自动以及递增。但是,似乎是从某处引用,问题是在哪里? 问题答案: 由于引用 这个假设是错误的。在Java中,您不能引用变量。变量中存储的是一个值。该值可以是原始类型值或引用类型值。对于基元,值是基元的值。对于引用类型, 引用值(通常只是引用)是指