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也會做相同的改變...