數(shù)據(jù)類型總結(jié),深淺拷貝

數(shù)據(jù)類型總結(jié),深淺拷貝

存一個(gè)值還是多個(gè)值

  1. 一個(gè)值:整型,浮點(diǎn)型,字符串
  2. 多個(gè)值:列表,元祖,字典,集合

有序 or 無(wú)序

  1. 有序:字符串,列表,元祖
  2. 無(wú)序:字典,集合

可變 or 不可變

  1. 可變:列表,字典,集合

  2. 不可變:整型,浮點(diǎn)型,字符串

淺拷貝和深拷貝的區(qū)別(只針對(duì)可變類型)

1.拷貝:

lis = [1,2,3,4]
lis2 = lis     
lis.append(5)
print(lis)
print(lis2)

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

2.淺拷貝

import copy

lis = [1,[3, 4]]
lis2 = copy.copy(lis)
print(lis)
print(lis2)

lis.append(2)
print(lis)
print(lis2)

lis[1].append(5)
print(lis)
print(lis2)

[1, [3, 4]]
[1, [3, 4]]


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


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

3.深拷貝

l1 = [1, [2, 3]]
l2 = copy.deepcopy(l1)

print(l1)
print(l2)

l1.append(2)
print(l1)
print(l2)

l1[1].append(5)
print(l1)
print(l2)

[1, [2, 3]]
[1, [2, 3]]


[1, [2, 3], 2]
[1, [2, 3]]


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

總結(jié):

這些只是一個(gè)現(xiàn)象

拷貝:共用一片內(nèi)存,l1發(fā)生改變則l2也會(huì)發(fā)生改變,因?yàn)閘1是可變類型

淺拷貝:另外開辟內(nèi)存,共用其中元素的地址,當(dāng)l1內(nèi)部的不可變對(duì)象發(fā)生改變時(shí),l2不發(fā)生改變,因?yàn)樵撛氐牡刂纷兞?當(dāng)l1內(nèi)部的可變對(duì)象發(fā)生了改變時(shí),l2隨之改變,因?yàn)榈刂凡蛔?/p>

深拷貝;另外開辟內(nèi)存,共用元素中不可變對(duì)象的地址,l1改變,l2不變,兩者互相獨(dú)立,沒(méi)有太大的關(guān)系

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容