Python深淺copy
深淺copy
資料型別的分類
可變(不可雜湊)的:list dict set
不可變(可雜湊)的:str bool int tuple
淺copy:
會在記憶體中新開闢一個空間,存放這個copy的列表,但是列表裡的內容還是沿用之前物件的記憶體地址。所以儘管l1,l2的id不同,但是內容id是相同的。
#淺複製
l1 = [1,2,3,[4,5,6]]
l2 = l1.copy()
print(id(l1))
print(id(l2))
l1.append(88)
print(l1)
print(l2)
print("-----給列表裡的小列表新增值------")
print(id(l1[3]))
print(id(l2[3]))
l2[-1].append("哈哈哈")
print(l1)
print(l2)
1979862092936
1979865206344
[1, 2, 3, [4, 5, 6], 88]
[1, 2, 3, [4, 5, 6]]
-----給列表裡的小列表新增值------
1979865206472
1979865206472
[1, 2, 3, [4, 5, 6, '哈哈哈'], 88]
[1, 2, 3, [4, 5, 6, '哈哈哈']]
#切片也是淺copy
l1 = [1,2,3,[4,5,6]]
l2 = l1[:]
l1[-1].append("哈哈")
print(l1)
print(l2)
[1, 2, 3, [4, 5, 6, '哈哈']]
[1, 2, 3, [4, 5, 6, '哈哈']]
深copy: 鄭州較好的婦科醫院
會在記憶體中開闢新空間,將原列表以及列表裡面的可變資料型別重新建立一份,不可變的資料型別則沿用之前的
#深copy
import copy
l1 = [1,2,3,[4,5,6]]
l2 = copy.deepcopy(l1)
print(id(l1))
print(id(l2))
print(id(l1[0]),id(l2[0])) # 不可變的資料型別則沿用之前的,所以id相同
print(id(l1[-1]),id(l2[-1])) # 可變的資料型別在記憶體中重新建立一份,所以id不同
l1[-1].append("哈哈哈")
print(l1)
print(l2)
1490814040776
1490814773896
140707873329984 140707873329984
1490813655816 1490814040584
[1, 2, 3, [4, 5, 6, '哈哈哈']]
[1, 2, 3, [4, 5, 6]]
區別:
淺copy:list dict:巢狀的可變的資料型別是同一個。
深copy:list dict:巢狀的可變的資料型別不是同一個。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2666449/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 編碼的進階,檔案操作,深淺copy
- 什麼叫做copy/mutableCopy?如何實現淺/深拷貝?
- 淺拷貝和深拷貝 iOS 的copy 以及 mutablecopyiOS
- 04_Python集合與深淺copy_全棧開發學習筆記Python全棧筆記
- python深淺拷貝Python
- 深淺拷貝 pythonPython
- python 的深淺複製Python
- Python列表的深淺複製Python
- 由淺入深學python(一)Python
- 深拷貝和淺拷貝 copy與strong修飾變數的區別變數
- Python淺拷貝與深拷貝Python
- Python中列表的深淺拷貝Python
- python深拷貝與淺拷貝Python
- python 淺複製、深複製坑Python
- python 深複製和淺複製Python
- python 深/淺複製及其區別Python
- js 淺拷貝(淺複製、淺克隆)、深拷貝(深複製、深克隆)JS
- 面試題分解—「淺複製/深複製、定義屬性使用copy還是strong ?」面試題
- Python3之淺談----深拷貝與淺拷貝Python
- java深克隆(深拷貝)和淺克隆(淺拷貝)Java
- 圖解 Python 淺拷貝與深拷貝圖解Python
- 老Python帶你從淺入深探究ListPython
- 老Python帶你從淺入深探究TuplePython
- python基礎學習9—-深淺拷貝Python
- 【Python】直接賦值,深拷貝和淺拷貝Python賦值
- Python擴充套件_淺拷貝和深拷貝Python套件
- python深複製和淺複製的區別Python
- promise由淺入深Promise
- JavaScript深淺拷貝JavaScript
- MongoDB由淺入深MongoDB
- javascript由淺入深JavaScript
- 淺顯直白的Python深複製與淺複製區別說明Python
- 淺談深拷貝與淺拷貝?深拷貝幾種方法。
- Java淺Copy的一些事Java
- python 指標拷貝,淺拷貝和深拷貝Python指標
- Python基礎入門知識點——深淺拷貝Python
- python深拷貝和淺拷貝之簡單分析Python
- copy& deepcopy pythonPython