Skip to main content
 首页 » 编程设计

python之我如何在python中按值分配

2025年05月04日12jyk

我理解,由于 Python 的工作方式 x = []; y = x; x.追加(1); y 将打印 [1]。然而,反过来说,

z = [1,2] 
temp = z 
temp[1] = 3 
z,temp 

将打印 ([1,3],[1,3])。如果我理解正确,z 和 temp 都指向同一个列表,所以改变一个会改变另一个,因为列表是可变的。我怎样才能防止这种情况发生?也就是说,我想制作一个 for 循环,将 z 复制到 temp 中,以不同的方式更改它,并将其推送到队列中。为此,z 必须始终包含基本数组,因此我需要更改 temp 不会更改 z。

编辑:我尝试将 z 更改为一个元组,以便 z=z,,然后调用 z[0] 而不是 z。这仍然不能解决我的问题。

请您参考如下方法:

复制一个列表很容易......只需将它切片:

temp = z[:] 

这将创建一个浅拷贝——列表中元素的突变将显示在 z 中的元素中,但不会直接更改为 temp。


对于更一般的用途,python 有一个copy 模块,您可以使用:

temp = copy.copy(z) 

或者,可能:

temp = copy.deepcopy(z)