Python中的賦值與淺複製與深複製之間的關係

給昨天畫個句號發表於2018-12-13

#賦值與淺複製一層列表

“””
a = [1, 2]   
b = a   #賦值
c = a.copy() #淺複製
a.append(3)    
print(b)  #父物件改變
print(c)  #父物件不變
“`
[1, 2, 3]
[1, 2]
“`
“””

#賦值與淺複製二層列表

“””
a = [1,2,[1,2]]   
b = a #賦值
c = a.copy() #淺複製
a[-1].append(3)
a.append(3)
print(b)  #父物件該變 賦值
print(c)  #父物件該變 淺複製
“`
[1, 2, [1, 2, 3], 3]
[1, 2, [1, 2, 3]]
“`
“””

#淺複製與深複製一層列表

“””
import copy
a = [1, 2]
b = copy.copy(a) #淺複製
c = copy.deepcopy(a) #深複製
a.append(3)
print(b)  #父物件不變 淺複製
print(c)  #父物件不變 深複製
“`
[1, 2]
[1, 2]
“`
“””

#淺複製與深複製二層列表

“””
a = [1,2,[1,2]]   
b = copy.copy(a) #淺複製
c = copy.deepcopy(a) #深複製
a[-1].append(3)
print(b)    #父物件該變 淺複製
print(c)    #父物件不變 深複製
“`
[1, 2, [1, 2, 3]]
[1, 2, [1, 2]]
“`
“””

#一層列表中,賦值會改變父物件 ,淺複製和深複製不會改變父物件。
#二層列表中,賦值會改變父物件(內外都變),淺複製會改變內層父物件,深複製不會改變內層父物件。

 

相關文章