一.浅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)