python中的深淺拷貝

2022-07-26 08:12:17 字數 1311 閱讀 3187

舉例說明:

#

引入copy模組

import

copy

lst1 = [1, 2, 3, ["

a", "b"

]]#賦值操作

lst2 =lst1

#切片操作,會產生新的列表-淺拷貝

lst3 =lst1[:]

lst4 =lst1.copy()

lst5 =copy.deepcopy(lst1)c"

)print

(lst1)

print

(lst2)

print

(lst3)

print

(lst4)

print

(lst5)

print

(id(lst1))

print

(id(lst2))

print

(id(lst3))

print

(id(lst4))

print

(id(lst5))

#淺拷貝後巢狀列表的記憶體位址一致

print(id(lst1[3]))

print(id(lst4[3]))

#深拷貝後巢狀列表的記憶體位址一致

print(id(lst1[3]))

print(id(lst5[3]))

執行結果:

[1, 2, 3, ['

a', '

b', '

c'], 4]

[1, 2, 3, ['

a', '

b', '

c'], 4]

[1, 2, 3, ['

a', '

b', 'c'

]][1, 2, 3, ['

a', '

b', 'c'

]][1, 2, 3, ['

a', 'b'

]]2251874503176

2251874503176

2251875870472

2251875870408

2251875870344

2251874503880

2251874503880

2251874503880

2251875870280

總結:

#

1. 賦值操作. 沒有建立新物件

#2. 淺拷貝. 只拷貝第一層內容. [:] copy()

#3. 深拷貝. 把這個物件內部的內容全部拷貝乙份. 引入copy模組. deepcopy()

python中深淺拷貝

先弄懂下面概念 變數 引用 物件 可變物件,不可變物件 切片 拷貝 淺拷貝,深拷貝 變數是乙個系統表的元素,擁有指向物件的鏈結的空間 物件是被分配的一塊記憶體,儲存其所代表的值 引用是自動形成的從變數到物件的指標 在python中不可變物件知 一旦建立就不可修改物件,包括字元創,元組,數字 在pyt...

Python 中的深淺拷貝

python 中的物件之間賦值時,時按照引用傳遞,如果需要拷貝物件 需要使用標準庫中的copy模組 1.copy.copy淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件 2.copy.deepcopy深拷貝 拷貝物件及其子物件 示例 encoding utf 8 import copy a 1,2...

python中的深淺拷貝

深淺拷貝 定義 1.淺拷貝 拷貝了最外層的物件,內部的元素只拷貝了乙個引用 2.深拷貝 外層的物件和內部的元素都拷貝 賦值 了一遍 術語 1.變數 是乙個系統表的元素,擁有指向物件的連線空間 2.物件 會在記憶體中占用一塊空間 3.引用 是自動形成的從變數到物件的指標 首位址,引用 4.型別 物件型...