深淺拷貝再回顧

2022-07-22 00:24:23 字數 954 閱讀 2061

print("

-----如果是改變物件的第一層-------------")

import

copy

a1=[1,2,[3,4,5]]

b1=a1.copy()

c1=copy.deepcopy(a1)

print("

a1>

",a1) #

[1,2,[3,4,5],6]

print("

b1>

",b1) #

[1,2,[3,4,5]]

print("

c1>

",c1) #

[1,2,[3,4,5]]

#

print("

-----如果是改變物件的第二層-------------")

a2=[1,2,[3,4,5]]

b2=a2.copy()

c2=copy.deepcopy(a2)

ppp"

)print("

a>

",a2) #

a2=[1,2,[3,4,5,"ppp"]]

print("

b>

",b2) #

b2=[1,2,[3,4,5,"ppp"]] 淺拷貝,共享子物件的記憶體,

print("

c>

",c2) #

c2=[1,2,[3,4,5]]

'''深淺拷貝總結:

淺拷貝:拷貝出來的新物件,他們只有物件下的第子物件是共享記憶體的,所以如果第二層的物件的

值改變的話,新物件的第二層物件也跟著改變。如果只是父物件改變,則新物件不改變

深拷貝:新拷貝出來的物件和原來的物件是兩個完全不同的物件,子物件也是不同的記憶體空間,乙個改變了

另外乙個不會改變

'''

基礎再回顧

標籤是沒有語義 的,它的作用就是為了 設定單獨的樣式用 的。這裡有幾句話這樣寫法瀏覽器會為文字自動新增雙引號,但是其實際意義在於引用別人說的話,而不是為了代替雙引號。table標籤,認識網頁上的 標題,肯定在最上面,也不能跑到表外面吧。所以在下一行的位置寫就行。備註,是這個表的備註,所以,緊跟著ta...

深淺拷貝以及深淺拷貝的方法

先考慮一種情況,對乙個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式 拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。執行結果 呼叫一次建構函式,呼叫兩次析構函式,兩個物件的指標成員所指記憶體相同,name指標被分配一次記憶體,但是程式結束時該記憶體卻被釋放了兩次,會造成記憶...

拷貝和深淺拷貝

當list2為list的拷貝物件時,list內的可變資料型別變化,list2變化 list內的不可變資料型別變化,list2變化。總之 list變化list2一定變化 list 1,2,3,4,list2 list print list print list2 1,2,3,4,5 1,2,3,4,5...