1.赋值操作
import copy
# 赋值操作
a = [1,2,3]
# 赋值是对对象的引用,对其中一个做改变也会影响另一个,两者只是对值的引用,共同体
b = a
print(b) # [1, 2, 3]
# 此时对b 的操作会影响a
b.append(0)
a.append(9)
print(b) # [1, 2, 3,0,9]
print(a) # [1, 2, 3,0,9]
2.浅拷贝
浅拷贝 浅拷贝只是拷贝第一次,如果有内嵌的话,只是对内嵌的地址引用,指向那个地址,内嵌改变,copy的也跟着改变
# 如果列表只有一层,d是浅拷贝的结果,对d进行操作,并不会改变原列表
i=[1,2,3,4]
j=copy.copy(i)
j.append(5)
print(j) # [1, 2, 3, 4, 5]
print(i) # [1, 2, 3, 4]
# 列表有两层 d对内嵌列表进行操作,会影响原列表
c = [1,2,3,[4,5]]
d=copy.copy(c)
# c.append(1)
d[3].append(2)
print(d) # [1, 2, 3, [4, 5, 2]]
print(c) # [1, 2, 3, [4, 5, 2]]
3.深拷贝
p = [1,2,[3,4]]
q = copy.deepcopy(p) # 独立于p 开辟了一个新的内存空间,不会因为p 的改变而改变
p[2].append(5)
print(q) # [1, 2, [3, 4]]
print(p) # [1, 2, [3, 4, 5]]