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 需要乙個中間變數 選擇排序 第乙個依次和剩餘的元素比...