一.深淺拷貝
1. = 沒有建立新物件, 只是把記憶體地址進行了複製
1 從上到下只有一個列表被建立 2 lst1 = ["胡辣湯", "灌湯包", "油潑面", "麻辣香鍋"] 3 lst2 = lst1 # 並沒有產生新物件. 只是一個指向(記憶體地址)的賦值 4 print(id(lst1)) 5 print(id(lst2)) 6 7 lst1.append("葫蘆娃") 8 print(lst1) 9 print(lst2)
2. 淺拷貝 lst.copy() 只拷貝第一層.
1 lst1 = ["胡辣湯", "灌湯包", "油潑面", "麻辣香鍋"] 2 lst2 = lst1.copy() # 拷貝, 抄作業, 可以幫我們建立新的物件, 和原來長的一模一樣, 淺拷貝 3 4 print(id(lst1)) 5 print(id(lst2)) 6 7 lst1.append("葫蘆娃") 8 print(lst1) 9 print(lst2)
1 lst1 = ["胡辣湯", "灌湯包", "油潑面", "麻辣香鍋",["長白山", "白洋澱", "黃鶴樓"]] 2 lst2 = lst1.copy() # 淺拷貝. 只拷貝第一次內容 3 4 print(id(lst1)) 5 print(id(lst2)) 6 7 print(lst1) 8 print(lst2) 9 10 lst1[4].append("葫蘆娃") 11 print(lst1) 12 print(lst2)
3. 深拷貝
import copy
copy.deepcopy() 會把物件內部的所有內容進行拷貝
1 import copy 2 lst1 = ["胡辣湯", "灌湯包", "油潑面", "麻辣香鍋",["長白山", "白洋澱", "黃鶴樓"]] 3 lst2 = copy.deepcopy(lst1) # 深拷貝:物件內部的所有內容都要複製一份. 深度克隆(clone). 原型模式 4 5 print(id(lst1)) 6 print(id(lst2)) 7 8 print(lst1) 9 print(lst2) 10 11 lst1[4].append("葫蘆娃") 12 print(lst1) 13 print(lst2)
科普為什麼要有深淺拷貝?
提高建立物件的速度
計算機中最慢的. 就是建立物件. 需要分配記憶體.
最快的方式就是二進位制流的形式進行復制. 速度最快