深浅Copy

一.浅copy

L1 = [1,2,3,4,5,6,7,8,9]
 
L2 = []

L2 = L1             #把L1的值赋给L2

L1[2] = 9            #修改L1中的某一个值 

L1 = [1,2,9,4,5,6,7,8,9] #L1中的值发生了变化

L2 = [1,2,9,4,5,6,7,8,9]  #L2也跟着发生变化

发现L2的值随着L1变化,但是用copy语句就不会影响

L1 = [1,2,3,4,5,6,7,8,9]

n2 = L1.copy            #设置n2为L1的copy

L1[2] = 9                #此时若改变L1中的某一个值,n2不发生改变

L1 = [1,2,9,4,5,6,7,8,9]

n2 = [1,2,3,4,5,6,7,8,9]

但遇到嵌套列表,情况又发生了变化

例如:

L1 = [1,2,3,4,5,6,7,8,9,["a","b"]]

n3 = L1.copy

L1 [-1] [0] = x

L1 = [1,2,3,4,5,6,7,8,9,["x","b"]]

n3 = [1,2,3,4,5,6,7,8,9,["x","b"]]

n3是L1的copy,但是修改列表L1中一个列表的值,n3也发生了变化,即使copy也不能保证全部copy,所以这种copy叫浅copy

二.深copy

可以做到完全copy,原来的列表发生变化时,不会影响copy的值,但此方法需要调用

import copy

n4 = copy.deepcopy(L1)
原文地址:https://www.cnblogs.com/sunj-96/p/10616420.html