拷貝是音譯的詞,其實他是從copy這個英文單詞音譯過來的,那什麼是copy? copy其實就是複製乙份,也就是所謂的抄乙份。深淺copy其實就是完全複製乙份,和部分複製乙份的意思。
1.賦值運算
1 l1 = [1,2,3,['不同與c、c++猶豫python不用靜態定義資料物件 如 int a1,a2;所以這裡不再是值的傳遞賦值,而python則是位址的共享。barry
','alex']]
2 l2 =l1
34 l1[0] = 111
5 print(l1) # [111, 2, 3, ['
barry
', '
alex']]
6 print(l2) # [111, 2, 3, ['
barry
', '
alex']]
78 l1[3][0] = '
wusir
'9 print(l1) # [111, 2, 3, ['
wusir
', '
alex']]
10 print(l2) # [111, 2, 3, ['
wusir
', '
alex
']]
2.淺拷貝:
1對於淺copy來說,只是在記憶體中重新建立了開闢了乙個空間存放乙個新列表,但是新列表中的元素與原列表中的元素是公用的。#同一**塊下:
2 l1 = [1, '
太白', true, (1,2,3), [22, 33
]]3 l2 =l1.copy()
4 print(id(l1), id(l2)) # 2713214468360
2713214524680
5 print(id(l1[-2]), id(l2[-2])) # 2547618888008
2547618888008
6 print(id(l1[-1]),id(l2[-1])) # 2547620322952
254762032295278
# 不同**塊下:
9 >>> l1 = [1, '
太白', true, (1, 2, 3), [22, 33
]]10 >>> l2 =l1.copy()
11 >>>print(id(l1), id(l2))
121477183162696
13 >>> print(id(l1[-2]), id(l2[-2
]))14
1477181814032
15 >>> print(id(l1[-1]), id(l2[-1
]))16
1477183162504
3.深拷貝
# 同一**塊下對於深copy來說,列表是在記憶體中重新建立的,列表中可變的資料型別是重新建立的,列表中的不可變的資料型別是公用的。import copy
l1 = [1, '
alex
', true, (1,2,3), [22, 33
]]l2 =copy.deepcopy(l1)
print(id(l1), id(l2)) #
2788324482440
2788324483016
print(id(l1[
0]),id(l2[0])) # 1470562768
1470562768
print(id(l1[-1]),id(l2[-1])) # 2788324482632
2788324482696
print(id(l1[-2]),id(l2[-2])) # 2788323047752
2788323047752
# 不同**塊下
>>>import copy
>>> l1 = [1, '
太白', true, (1, 2, 3), [22, 33
]]>>> l2 =copy.deepcopy(l1)
>>>print(id(l1), id(l2))
1477183162632
>>> print(id(0), id(0
))1470562736
>>> print(id(-2), id(-2
))1470562672
>>> print(id(l1[-1]), id(l2[-1
]))1477183162312
1 >>> l1 = [1, 2, 3, 4, ['面試題目alex']]
2 >>> l2 =l1[::]
)4 >>>print(l2)
5 [1, 2, 3, 4, ['
alex
', 666
]]6 >>>print(l1)
7 [1, 2, 3, 4, ['
alex
', 666]]
Python基礎 深淺拷貝
import copy num 0 copy num copy.copy num print these are normal copy center 60,print num,id num print copy num,id copy num print these are deep copy c...
python基礎之深淺拷貝
深淺拷貝 對於字串 str 數字 int 布林型別 bool 等型別深淺拷貝都是開闢新記憶體 對於列表 list 集合 set 字典 dict 深淺拷貝可變型別都一樣,如 1,2,3 對於列表 list 集合 set 字典 dict 存在巢狀的深淺拷貝不一樣,如 1,2,3,4,5,6 淺拷貝只拷貝...
python 深淺拷貝案例 python 深淺拷貝
深淺拷貝 對於 數字 和 字串 而言,賦值 淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址 import copy a1 22255 a2 22255 print id a1 id a2 3428240 3428240 對於字典 元祖 列表 而言,進行賦值 淺拷貝和深拷貝時,其記憶體位址的變化...