python之深淺拷貝

2021-10-01 13:28:56 字數 1146 閱讀 9719

在python中的資料型別包括:bool,int,float,str,set,list,tuple,dict等。

** 簡單資料型別:**bool,int,float,str

**複雜資料型別:**list,tuple,set,dict

對於簡單的資料型別變數在記憶體中儲存都是儲存「資料本身」,而對於複雜的資料型別來說,在記憶體中儲存的是資料的記憶體位址

第一層建立的是新的記憶體位址,但從第二層開始,指向的都是同乙個記憶體位址,所以,對於第二層以及更深層的層數來說,保持一致性。

匯入模組,

import copy

copy.deepcopy()

對於深拷貝來說,巢狀的可變資料型別重新開闢一塊記憶體空間。

#author:298

_date_ =

"date 上午9:28"

import copy

name_list =

["tom"

,"jerry",[

"悟空"

,"八戒"]]

name_list2 = copy.deepcopy(name_list)

#檢視拷貝內容

# print(name_list)#['tom', 'jerry', ['悟空', '八戒']]

# print(name_list2)#['tom', 'jerry', ['悟空', '八戒']]

#修改第一層內容

name_list2[0]

="zs"

print

(name_list)

#['tom', 'jerry', ['悟空', '八戒']]

print

(name_list2)

#['zs', 'jerry', ['悟空', '八戒']]

#修改第二層

name_list2[2]

[0]=

"一圈超人"

print

(name_list)

#['tom', 'jerry', ['悟空', '八戒']]

print

(name_list2)

#['zs', 'jerry', ['一圈超人', '八戒']]

python之深淺拷貝

lis 1 3,world 1,hello lis 2 lis 1.copy print 列表1元素的id lis 1,id lis 1 0 id lis 1 0 0 id lis 1 0 1 id lis 1 1 id lis 1 2 print 列表2元素的id lis 2,id lis 2 0...

python之深淺拷貝

基礎沒打牢,python的深淺copy老是混淆,模稜兩可的。一 物件賦值 a 1,2,3 b a 物件賦值 print id a print id b 執行上面的 可以發現id a id b 為什麼呢?其實是在記憶體中有乙個列表 1,2,3 a和b就是兩個標籤,都指向列表 1,2,3 如下圖 當修改...

python之深淺拷貝

對於 數字 和 字串 而言,賦值 淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址。importcopy 數字 字串 n1 123 n1 age 10 print id n1 賦值 n2 n1 print id n2 淺拷貝 n2 copy.copy n1 print id n2 深拷貝 n3 ...