リストの浅いコピー、深いコピー
1395 ワード
import copy
list0 = [1,[2,3],4,5]
print(list0)
newlist = list0
list1 = list(list0)
list2 = list0 * 1
list3 = list0[:]
list4 = copy.copy(list0)
list5 = copy.deepcopy(list0) # ,
list6 = list0.copy()
list0.append(6)
list0[1].append(23)
print(" list0:\t",list0,"\t :\t",id(list0))
print("---------")
print("= :\t\t\t",newlist," :",id(newlist))
print("list() :\t\t\t",list1," :",id(list1))
print("* :\t\t\t",list2," :",id(list2))
print("[:] :\t\t\t",list3," :",id(list3))
print("copy.copy() :\t\t\t",list4," :",id(list4))
print("list0.copy() :\t\t\t",list5," :",id(list5))
print("copy.deepcopy() :\t\t\t",list6," :",id(list6))
結果:
元のlist 0:[1,[2,3],4,5]アドレス:2164100449736修正後のlist 0:[1,[2,3,23],4,5,6]アドレス:2164100449736----=番号方式:[1,[2,3,23],4,5,6]アドレス:2164100449736 list()方式:[1,[2,3,23],4,5,6]アドレス:2164100449736 list()方式:[1,[2,3,23],4,5.アドレス:216409026056*号方式:[1,[2,3,23],4,5]アドレス:2164100451016[:]方式:[1,[2,3,23],4,5]アドレス:2164100450952 copy.copy()方式:[1,[2,3,23],4,5]アドレス:2164100450888 copy.deepcopy()方式:[1,[2,3],4,5]アドレス:2164100450824 list 0.copy()方式:[1,[2,3,23],4,5]アドレス:2164100450696
copy.deepcopy()は、サブリスト要素を含むすべての要素に新しいメモリ空間を開く、=番号付け方式でアドレスを直接伝達し、他の方法はサブ要素に空間を開くが、サブリストは元のサブリストを指す.