淺copy:當呼叫copy()函式時,在記憶體中會創建一個新的空間(串列,字典),里面存放的資料用的是之前的串列里的資料,當改變之前串列里的可變資料型別里的資料時,copy的另外的串列里的可變資料型別里的資料也會發生改變,即元素共用,
# l1 = [1,2,3,['abc','hht']]
# l2 = l1.copy() //l2為一個新的串列[],因此記憶體地址與l1的不同
# l1[-1].append('abc')//l1[-1]:['abc','hht]為可變的資料型別
# print(l1)
# print(l2)
>>l1:[1,2,3,['abc','hht','asd']]
l2:[1,2,3,['abc','hht','asd']]
深copy:當呼叫deepcopy()函式時,在記憶體中也會創建一個新的空間,但與淺copy()不同,python對深copy進行了優化,即對不可變的資料型別繼續用之前的資料,對于可變的資料型別(串列,字典,集合)則會從新創建一個新的,所以當修改之前的串列里的可變資料型別的資料時,新的串列里的可變的資料型別的資料并不會像淺copy()一樣跟著改變,
# import copy
# l1 = [1,2,3,['abc','hht']]
# l2 = copy.deepcopy(l1)
# l1.append('asd')
# print(l1)
# print(l2)
>>l1: [1,2,3,['abc','hht',asd]]
l2: [1,2,3,[abc','hht']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/185746.html
標籤:Python
