您问了两个问题:
深层副本与浅层副本
matrix[:]是一个 浅表副本 -仅复制直接存储在其中的元素,而不递归地复制数组或内部其他引用的元素。这意味着:
a = [[4]]b = a[:]a[0].append(5)print b[0] # Outputs [4, 5], as a[0] and b[0] point to the same array
如果将对象存储在中,也会发生同样的情况
a。
deepcopy()自然地,它是一个 深层副本 -它递归地在树上一直递归复制其每个元素的副本:
a = [[4]]c = copy.deepcopy(a)a[0].append(5)print c[0] # Outputs [4], as c[0] is a copy of the elements of a[0] into a new array
归来
returnfinal.append(li)与调用
append和返回不同,
final因为list.append不返回列表对象本身,而是返回
None


![Python:deepcopy(list)与new_list = old_list [:] Python:deepcopy(list)与new_list = old_list [:]](http://www.mshxw.com/aiimages/31/646323.png)
