天天看点

Python--赋值与深浅拷贝

赋值

赋值:就是给对象起一个别名

info = [1,2,3,4,5]
b = a  #a 与b 指向的是同一个对象,当改变b的值时会对a产生影响,当改变a的值时也会对b产生影响
           
Python--赋值与深浅拷贝

浅拷贝

浅拷贝使用函数:copy 顾名思义就是拷贝的不够彻底,浅尝辄止

会拷贝出一个父列表的新地址对象。对于父列表,不是同一个对象,里面的子列表指向的还是是同一对象

import  copy
alist = [10,20,30,[100,200]]
blist = copy.copy(alist)
blist.append(8)
blist[3].append(300)#两个都会修改
print('alist--->',alist)
print('blist--->',blist)
输出:
alist---> [10, 20, 30, [100, 200, 300]]
blist---> [10, 20, 30, [100, 200, 300], 8]
           
Python--赋值与深浅拷贝

深拷贝

深拷贝:deepcopy 顾名思义就是拷贝彻底了,会拷贝出一个外层列表的新地址的对象,子列表也是独立的,不是同一个对象

import copy
alist = [10,20,30,[100,200]]
blist = copy.deepcopy(alist)
blist.append(40)
blist[-2].append(300)
print('alist--->',alist)
print('blist--->',blist)
输出
alist---> [10, 20, 30, [100, 200]]
blist---> [10, 20, 30, [100, 200, 300], 40]
           
Python--赋值与深浅拷贝

总结

深浅拷贝和直接赋值:总结就是是否独立出新的对象

直接赋值:不会独立出新的对象

浅拷贝:独立的不完全,只是独立出父列表,子列表不独立

深拷贝:完全独立,父列表和子列表都是独立的