1. 程式人生 > >python中的淺拷貝和深拷貝

python中的淺拷貝和深拷貝

div blog deep imp class pri cnblogs 字符串 style

1.淺拷貝

copy.copy()

淺拷貝是拷貝只拷貝最外一層(這裏所說的拷貝是重新生成一個內存地址,也就是只有最外層的地址是重新生成)

import copy
li=[23,45,[wew,35,[33,00]]]
li1=copy.copy(li)
print(id(li),id(li1))
print(id(li[0]),id(li1[0]))
print(id(li[2][1]),id(li1[2][1]))
#輸出:35540704 5872576
#     1625084720 1625084720
#     1625084912 1625084912
#可以看出只有li與li1的地址不同  他們的元素的地址是相同的         

2.深拷貝

copy.deepcopy()

深拷貝是除了最裏面一層的其他的都拷貝(最裏面一層只拷貝值 不重新生成一個內存地址)

import copy
li=[23,[2,99],[wew,35,[33,0]]]
li1=copy.deepcopy(li)
print(li1)
print(id(li),id(li1))
print(id(li[2][2]),id(li1[2][2]))
print(id(li[2][2][0]),id(li1[2][2][0]))
#輸出:[23, [2, 99], [‘wew‘, 35, [33, 0]]] 7734816 7183296 7687104 7734936 1625084880 1625084880

3.對於數字和字符串是完全拷貝

import copy
s1=wang
s2=copy.copy(s1)
print(s2)
print(id(s1),id(s2))
#輸出:wang
#     4868256 4868256    

python中的淺拷貝和深拷貝