关于列表和列表之间赋值问题,以及copy问题

name = [1,2,3,4,5]

names = name

当name的值 赋值给names,name列表里面的值修改了,为什么names的值也被修改了

这是因为列表需要一个容器去存放里面的值,容器里面的值内存地址是不一样的,names 被赋值的只是name存放列表的容器。name 和names 指向的都是同一个内存地址当中的一个容器,所以当name列表值被修改时,names也跟着修改了

copy问题   

name = [1,2,3,[5,6.7]]
n1=name.copy()

当 name[-1][0]= 1时

n1的值也跟着修改了。

这是因为copy只能潜copy,不能影响到深处,列表里面的嵌套列表依旧还是指向同一个内存地址。

要深度copy,必须使用而外的copy工具

import copy

n2 = copy.deepcopy(n1)

只有这样完全copy,才会全部独立

原文地址:https://www.cnblogs.com/zhengyiqun1992/p/9971998.html