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,才会全部独立