给出一个列表
x=[1,2,3,4]
进行如下操作
y=x
y[0]=10
print(x)
[10,2,3,4]
用这种方式将x的值赋给y之后,修改y中的元素也会改变x中的元素。
因为y和x都是对同一块内存空间的引用。
我们可以创造x的一个浅拷贝
y=x[:] #或者
y=x.copy()
y[0]=10
print(x)
[1,2,3,4] #此时修改y的值,x不发生改变
重新定义一个新的列表x
x=[1,2,[3,4]]
y=x.copy()
y[0],y[2][0]=10,10
print(y)
print(x)
[10, 2, [10, 4]]
[1, 2, [10, 4]]
y的元素自然改变了,但是x中的一级元素发生改变,二级元素并没有发生改变。
我们这次导入copy模块
import copy
x=[1,2,[3,4]]
y=copy.deepcopy(x)
y[0],y[2][0]=10,10
print(y)
print(x)
[10, 2, [10, 4]]
[1, 2, [3, 4]]
此时一级元素和二级元素都没有发生改变。