Python中的赋值与浅复制与深复制之间

  • 2020 年 1 月 20 日
  • 筆記

#赋值与浅复制一层列表

""" a = [1, 2]    b = a   #赋值 c = a.copy() #浅复制 a.append(3)     print(b)  #父对象改变 print(c)  #父对象不变 ''' [1, 2, 3] [1, 2] ''' """

#赋值与浅复制二层列表

""" a = [1,2,[1,2]]    b = a #赋值 c = a.copy() #浅复制 a[-1].append(3) a.append(3) print(b)  #父对象该变 赋值 print(c)  #父对象该变 浅复制 ''' [1, 2, [1, 2, 3], 3] [1, 2, [1, 2, 3]] ''' """

#浅复制与深复制一层列表

""" import copy a = [1, 2] b = copy.copy(a) #浅复制 c = copy.deepcopy(a) #深复制 a.append(3) print(b)  #父对象不变 浅复制 print(c)  #父对象不变 深复制 ''' [1, 2] [1, 2] ''' """

#浅复制与深复制二层列表

""" a = [1,2,[1,2]]    b = copy.copy(a) #浅复制 c = copy.deepcopy(a) #深复制 a[-1].append(3) print(b)    #父对象该变 浅复制 print(c)    #父对象不变 深复制 ''' [1, 2, [1, 2, 3]] [1, 2, [1, 2]] ''' """

#一层列表中,赋值会改变父对象 ,浅复制和深复制不会改变父对象。 #二层列表中,赋值会改变父对象(内外都变),浅复制会改变内层父对象,深复制不会改变内层父对象。