python的深拷贝浅拷贝(copy /deepcopy )
先说结论:
浅拷贝:
浅拷贝对在第一层的操作都是新建,不改变原对象。
浅拷贝对于原拷贝对象中的嵌套的可变对象是引用,对原拷贝对象中的嵌套的不可变对象是新建。
对新建的对象操作不会影响原被拷贝对象。
对引用对象操作会影响原被拷贝对象。
例如:a = [ [1,1], [2,2] ]
a.append([3,3]) 是对a操作,也就是第一层
而a[1].append(2) 是对a[1] 进行操作,就是对嵌套的元素进行操作了。
深拷贝:
完全不影响原被拷贝对象
# 对列表的深浅拷贝
import copya = [1,2,(3,3),[4,4],[5,5]]
b = [1,2,(3,3),[4,4],[5,5]]
c = a.copy()
d = copy.deepcopy(b)
c[0] += 100
c.append((888,888))
c.append([999,999])
c[2] = (33,33)
c[4] = [5555,5555]c[3].append(4444)
d[0] += 100
d.append((888,888))
d[2] = (33,33)
d[3].append(4444)
d[4] = [5555,5555]
d.append([999,999])print('a',a,' ','c',c)
print('b',b,' ','d',d)
浅拷贝
深拷贝