kind 搭建k8s+dashboard的記錄
阿新 • • 發佈:2020-10-14
深淺拷貝 -- 複製
面試必問:賦值、淺拷貝、深拷貝
淺拷貝:.copy / lst[:]
lst = [1,2,3,[5, 6, 7]] lst1 = lst print(lst1) print(lst) lst[-1].append(8) print(lst1) print(lst) lst = [1, 2, 3, [5, 6, 7]] lst1 = lst.copy() # 新開闢一個空間給lst1 print(lst) print(id(lst)) print(lst1) print(id(lst1)) print(lst[0]) print(lst1[0]) print(id(lst[0])) print(id(lst1[0]))
淺拷貝的時候,只會開闢一個新的容器列表,其他元素使用的都是原列表中的元素
lst = [1, 2, 3, [5, 6, 7]] lst1 = lst.copy() lst1[-1].append(8) print(lst) print(lst1) lst = [1, 2, 3, [5, 6, 7]] lst1 = lst.copy() lst[0] = 11 print(lst1) print(lst) lst = [1, 2, 3, [5, 6, 7]] lst1 = lst.copy() lst[3] = 567 print(lst) print(lst1) lst = [1, 2, 3, 4, [5, 6, 7, [8, 9]]] lst1 = lst.copy() lst1.append(10) print(lst) # [1, 2, 3, 4, [5, 6, 7, [8, 9]]] print(lst1) # [1, 2, 3, 4, [5, 6, 7, [8, 9]], 10] lst = [[1, 2], 90, 6, 7, [5, 6]] lst1 = lst.copy() lst1[0].append(8) print(lst) print(lst1) dic = {"xieyulin": "50"} dic1 = dic.copy() dic["yilin"] = "10" print(dic) print(dic1) dic = {"xieyulin": [1, 2, 3, [5, 6]]} dic1 = dic.copy() dic["xieyulin"][-1].append(0) print(dic) print(dic1) dic = {"xieyulin": [1, 2, 3, [5, 6]]} dic1 = dic.copy() dic["xieyulin"][-1] = 0 print(dic) print(dic1) dic = {"xieyulin": [1, 2, 3, [5, 6]]} dic1 = dic.copy() dic["xieyulin"] = 0 print(dic) print(dic1)
淺拷貝的時候,只拷貝第一層元素
淺拷貝在修改第一層元素(不可變資料型別)的時候,拷貝出來的新列表不進行改變
淺拷貝在替換第一層元素(可變資料型別)的時候,拷貝出來的新列表不進行改變
淺拷貝在修改第一層元素中的元素(第二層)的時候,拷貝出來的新列表進行改變
深拷貝:
import copy # 匯入 copy是個模組 lst = [1, 2, 3, [5, 6, 7]] lst1 = copy.deepcopy(lst) # 深拷貝 lst[0] = '123' print(lst) print(lst1) # 沒變,同淺拷貝 lst = [1, 2, 3, [5, 6, 7]] lst1 = copy.deepcopy(lst) # 深拷貝 lst[-1] = '123' print(lst) print(lst1) # 沒變,同淺拷貝 lst = [1, 2, 3, [5, 6, 7]] lst1 = copy.deepcopy(lst) # 深拷貝 lst[-1].append(8) print(lst) # [1, 2, 3, [5, 6, 7, 8]] print(lst1) # 沒變 [1, 2, 3, [5, 6, 7]]
深拷貝開闢一個容器空間(列表),不可變資料公用,可變資料資料型別(再次開闢一個新的空間),空間裡的值使用的是不可變的資料進行公用,可變的資料型別再次開闢空間