深淺拷貝
首先來(lái)個(gè)準(zhǔn)備知識(shí):
list1 = ['我愛(ài)你',?'中國(guó)',?'親愛(ài)的母親']
list2 = list1#列表,進(jìn)行賦值操作垮兑,實(shí)際上是引用內(nèi)存地址的賦值冷尉。內(nèi)存中此時(shí)只有一個(gè)列表,兩個(gè)變量指向一個(gè)列表
list2.append('我為你自豪')#對(duì)其中一個(gè)進(jìn)行操作系枪,兩個(gè)都跟著邊雀哨。
print(list2)#['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', '我為你自豪']
print(list1)#['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', '我為你自豪']
淺拷貝copy?創(chuàng)建對(duì)象
list1 = ['我愛(ài)你', '中國(guó)', '親愛(ài)的母親']
list2 = list1.copy()? # list2 和list1 不是一個(gè)對(duì)象了
# lst2 = list1[:]? # 切片會(huì)產(chǎn)生新的對(duì)象
list1.append("親愛(ài)的母親")
print(list1)#['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', '親愛(ài)的母親']
print(list2)#['我愛(ài)你', '中國(guó)', '親愛(ài)的母親']
注意:切片操作會(huì)產(chǎn)生新的對(duì)象。所以list1 = list2[:]私爷,得到的結(jié)果和list1.copy()一樣雾棺。
list1 = ['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', ['我為你流淚', '我為你自豪']]
list2 = list1.copy()
list1[3].append("我愛(ài)你中國(guó)")
print(list1)#['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', ['我為你流淚', '我為你自豪', '我愛(ài)你中國(guó)']]
print(list2)#['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', ['我為你流淚', '我為你自豪', '我愛(ài)你中國(guó)']]
深拷貝
import copy
list1 = ['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', ['我為你流淚', '我為你自豪']]
list2 = copy.deepcopy(list1)? # 把list1扔進(jìn)去進(jìn)行深度拷貝 , 包括內(nèi)部的所有內(nèi)容進(jìn)行拷貝
list1[3].append("我愛(ài)你中國(guó)")
print(list1)#['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', ['我為你流淚', '我為你自豪', '我愛(ài)你中國(guó)']]
print(list2)#['我愛(ài)你', '中國(guó)', '親愛(ài)的母親', ['我為你流淚', '我為你自豪']]