python-之-深淺拷貝一
阿新 • • 發佈:2019-04-21
分享 hid 結果 cli view pre 嵌套 abc cfb
深淺拷貝
一、數據為不可變類型 (str、int、bool)
import copy v1 = "abc" v2 = copy.copy(v1) v3 = copy.deepcopy(v1) print(v1 == v2) print(v1 is v2) print(v1 is v3) 輸出結果: True True TrueView Code
小結:數據為不可變類型時,淺和深拷貝的值一樣,且指向同一內存地址。(不考慮小數據池)
二、數據為可變類型 (list、set、dict)
1、沒有嵌套的情況
import copy v1 = [1,2,3,4,5] v2 = copy.copy(v1) v3 = copy.deepcopy(v1) print(v1 == v2 == v3) print(v1 is v2) print(v1 is v3) 輸出: True False FalseView Code
小結:沒有嵌套的情況,深淺拷貝也是一樣的,都拷貝第一層。
2、有嵌套的情況:
import copy v1 = [1,2,3, [4, 5, 6]] v2 = copy.copy(v1) v3View Code= copy.deepcopy(v1) print(v1 == v2 == v3) print(v1 is v2) print(v1 is v3) print(v1[3] is v2[3]) print(v1[3] is v3[3]) print(v2[3] is v3[3]) print(v1[3][0] is v2[3][0]) print(v1[3][0] is v3[3][0]) print(v2[3][0] is v3[3][0]) 輸出: True False False True False False True True True
小結:在嵌套的情況下:
淺拷貝:拷貝第一層
深拷貝:拷貝嵌套下面所有可變類型
總結:
淺拷貝:只拷貝第一層
深拷貝:拷貝嵌套層次中的所有可變類型
python-之-深淺拷貝一