day08深淺拷貝

2021-10-08 02:51:56 字數 3199 閱讀 3570

python深淺拷貝

==是把原列表第一層的記憶體位址拷貝乙份給新列表。對於不可變型別拷貝本身id記憶體位址給新列表(原列表修改不可改變型別的值,新列表不會變),對於可變型別是拷貝可變型別容器本身的id給新列表(原列表修改其中內嵌可變型別的元素值,新列表也會變)==

例項:

list=[

'jesse'

,'zhangsan',[

'786'

,'2.23']]

list1=

list

.copy(

)print

(list

)print

(list1)

print

("原列表id:",id

(list))

print

("拷貝的列表id:",id

(list1)

)print

("原列表內嵌列表id:",id

(list[2

]))print

("拷貝的列表內嵌列表id:",id

(list1[2]

))list[0

]='jc'

list[2

][0]

='yuanyuan'

print

(list

)print

(list1)

print

("原列表id:",id

(list))

print

("拷貝的列表id:",id

(list1)

)print

("原列表內嵌列表id:",id

(list[2

]))print

("拷貝的列表內嵌列表id:",id

(list1[2]

))# 執行結果

['jesse'

,'zhangsan',[

'786'

,'2.23']]

['jesse'

,'zhangsan',[

'786'

,'2.23']]

原列表id

:2557709542024

拷貝的列表id

:2557710045576

原列表內嵌列表id

:2557709541960

拷貝的列表內嵌列表id

:2557709541960

['jc'

,'zhangsan',[

'yuanyuan'

,'2.23']]

['jesse'

,'zhangsan',[

'yuanyuan'

,'2.23']]

原列表id

:2557709542024

拷貝的列表id

:2557710045576

原列表內嵌列表id

:2557709541960

拷貝的列表內嵌列表id

:2557709541960

​ 在拷貝時區分原列表是可變型別和還是不可變型別,對於不可變型別直接將其值的id及記憶體位址複製給新的列表,對於可變型別則重新生成乙個容器id(多層巢狀也是如此)

例項:

import copy

list=[

'jesse'

,'zhangsan',[

'786'

,'2.23']]

list1=copy.deepcopy(

list

)print

(list

)print

(list1)

print

("原列表id:",id

(list))

print

("拷貝的列表id:",id

(list1)

)print

("原列表內嵌列表id:",id

(list[2

]))print

("拷貝的列表內嵌列表id:",id

(list1[2]

))list[0

]='jc'

list[2

][0]

='yuanyuan'

print

(list

)print

(list1)

print

("原列表id:",id

(list))

print

("拷貝的列表id:",id

(list1)

)print

("原列表內嵌列表id:",id

(list[2

]))print

("拷貝的列表內嵌列表id:",id

(list1[2]

))# 執行結果

['jesse'

,'zhangsan',[

'786'

,'2.23']]

['jesse'

,'zhangsan',[

'786'

,'2.23']]

原列表id

:2715253531272

拷貝的列表id

:2715253636040

原列表內嵌列表id

:2715253532488

拷貝的列表內嵌列表id

:2715253636104

['jc'

,'zhangsan',[

'yuanyuan'

,'2.23']]

['jesse'

,'zhangsan',[

'786'

,'2.23']]

原列表id

:2715253531272

拷貝的列表id

:2715253636040

原列表內嵌列表id

:2715253532488

拷貝的列表內嵌列表id

:2715253636104

拷貝的列表id: 2715253636040

原列表內嵌列表id: 2715253532488

拷貝的列表內嵌列表id: 2715253636104

學習筆記day08

單例設計模式 上圖中,想要實現a,b的配置資訊共享,因為a,b是兩個new,所以必然是不同的物件,一種方法就是將其配置資訊全部設成靜態,但資訊很多時會導致儲存資訊過多。單例設計模式流程 1,主函式main進棧,定義s1 2,等號右邊,single載入進入方法區,接著是single的建構函式。s和ge...

Day08 強制轉換

int i 128 byte c byte i 記憶體溢位 double b i 自動轉換 低 高 自動轉換 低 高 system.out.println i 128 system.out.println c 128 system.out.println b 1.不能對布林值進行轉換 2.不能把物件...

day08查詢,排序

氣泡排序japi呼叫程式程式設計介面 注意導包否則就要寫類全名 包名.類名 只寫類名,預設在本包中找 那個陣列方法因為是傳引用,所以不需要返回值 題目中也沒要求返回陣列 氣泡排序 依次比較相鄰兩個元素 1 巢狀迴圈 2 內層迴圈取決於外層迴圈 3 需要乙個中間變數 選擇排序 第乙個依次和剩餘的元素比...