如何在值而不是内存中使x = y?

Moo*_*lla 1 python

我需要一些帮助来理解这段代码:

x = [1,2,3]
y = [4,5,6]
x = y
print x
print y
y.remove(4)
print x
print y  
Run Code Online (Sandbox Code Playgroud)

当我4从列表中删除时[4,5,6],xy变量都指向[5,6]内存中的相同列表我是对的吗?
如果是这样,那么我如何才能使列表x的副本等于并且两者都指向内存中的不同位置,但这些位置都保持相同的值?(与他们相反,他们都指向内存中的相同位置,如上所示)yxy

lvc*_*lvc 9

特别是对于列表,您可以通过获取整个列表的一部分来制作浅表副本:

x = y[:]
Run Code Online (Sandbox Code Playgroud)

这不能保证适用于任意可切片对象(例如,numpy数组切片不会创建新数组),因此使用内置copy模块会很有用:

import copy
x = copy.copy(y)
Run Code Online (Sandbox Code Playgroud)

可以期待为仲裁工作y.


Yos*_*ssi 7

只需克隆列表:

x = list(y)
Run Code Online (Sandbox Code Playgroud)