Python学习日记(六) 浅深copy
生活随笔
收集整理的這篇文章主要介紹了
Python学习日记(六) 浅深copy
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
淺深copy即完全復(fù)制一份和部分復(fù)制一份
淺深copy在列表數(shù)據(jù)量較大時(shí)不建議使用,比較消耗內(nèi)存資源
1.賦值運(yùn)算
l1 = [1,'s',[1,2,3]] l2 = l1 print(id(l1),id(l2)) #34103880 34103880 l1[2][1] = 'h' print(id(l1),id(l2)) #34103880 34103880l1和l2指向的是相同的內(nèi)存地址
2.淺copy
l1 = [1,'s',[4,5,6,'s','h']] l2 = l1.copy() print(id(l1),id((l2))) #5988936 6475464 print(id(l1[0]),id(l2[0])) #8791394136912 8791394136912 print(id(l1[2][0]),id(l2[2][0])) #8791410914224 8791410914224淺copy即開辟一個(gè)新的內(nèi)存空間放一個(gè)新的列表,但是里面的元素兩邊都是公用的
3.深copy
import copy l1 = [1,'s',False,(2,3,4),{1,2,3},['a','b']] l2 = copy.deepcopy((l1)) print(id(l1),id(l2)) #42180488 42179272 print(l1,l2) #不可變數(shù)據(jù)類型 print(id(l1[0]),id(l2[0])) #8791394136912 8791394136912 print(id(l1[1]),id(l2[1])) #37970136 37970136 print(id(l1[2]),id(l2[2])) #8791410383216 8791410383216 print(id(l1[3]),id(l2[3])) #39259880 39259880 #可變數(shù)據(jù)類型 print(id(l1[4]),id(l2[4])) #42293064 42293512 print(id(l1[5]),id(l2[5])) #42685064 42685192深copy是開辟一個(gè)新的列表內(nèi)存空間,當(dāng)列表中有不可變數(shù)據(jù)類型的元素時(shí)則與原列表共用,當(dāng)列表有可變數(shù)據(jù)類型的元素時(shí)則會(huì)重新創(chuàng)建一個(gè)內(nèi)存地址
面試題:
l1 = [1, 2, 3, 4, ['alex']] l2 = l1[::] l1[-1].append(666) print(l2) #[1, 2, 3, 4, ['alex', 666]]轉(zhuǎn)載于:https://www.cnblogs.com/Fantac/p/11278736.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Python学习日记(六) 浅深copy的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习(1)
- 下一篇: 单链表反转的原理和python代码实现