Python3的深拷貝和淺拷貝

2022-07-20 11:54:06 字數 1236 閱讀 4940

a = 1

b = a

a = 2

print(a, b)

print(id(a), id(b))

"""執行結果

2 11445293568 1445293536

"""# 列表直接復賦值給列表不屬於拷貝, 只是記憶體位址的引用

list1 = ["a", "b", "c"]

list2 = list1

print(list1, list2)

print(id(list1), id(list2))

"""執行結果

['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'd']

1947385383176 1947385383176

"""# 淺拷貝

list1 = ["a", "b", "c"]

list2 = list1.copy()

print(list1, list2)

print(id(list1), id(list2))

"""

執行結果:

['a', 'b', 'c', 'd'] ['a', 'b', 'c']

1553315383560 1553315556936

"""# 淺拷貝, 只會拷貝第一層, 第二層的內容不會拷貝

list1 = ["a", "b", "c", [1, 2, 3]]

list2 = list1.copy()

print(list1, list2)

print(id(list1), id(list2))

"""執行結果

['a', 'b', 'c', [1, 2, 3, 4]] ['a', 'b', 'c', [1, 2, 3, 4]]

1386655149640 1386655185672

"""# 深拷貝

import copy

list1 = ["a", "b", "c", [1, 2, 3]]

list2 = copy.deepcopy(list1)

print(list1, list2)

print(id(list1), id(list2))

"""執行結果

['a', 'b', 'c', [1, 2, 3, 4]] ['a', 'b', 'c', [1, 2, 3]]

1452762592904 1452762606664

"""

Python3之淺拷貝和深拷貝

python中賦值語句不複製物件,而是在目標和物件之間建立繫結 bindings 關係。python3中有6種標準的資料型別,可分為可變型別和不可變型別。可變型別 list 列表 dictionary 字典 set 集合 不可變型別 number 數字 string 字串 tuple 元組 淺拷貝由...

Python3入門之 淺拷貝和深拷貝

由於python使用了物件引用,因此在使用賦值操作符 時,並沒有進行賦值操作。如果右邊的運算元是字面值,比如字串或數字,那麼左邊的運算元被設定為乙個物件引用,該物件引用將指向存放字面值的記憶體物件。如果右邊的運算元是乙個物件引用,那麼左邊的運算元將設定為乙個物件引用,並與右邊的運算元指向相同的物件。...

python 深拷貝 Python深拷貝和淺拷貝!

在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用 一般有三種方法,alist 1,2,3,a b 1 直接賦值 b alist,預設淺拷貝傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變...