Python--赋值与深浅拷贝

赋值

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

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

赋值操作的图解

浅拷贝

浅拷贝使用函数: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]

浅拷贝的图解

深拷贝

深拷贝: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]

深拷贝的图解

总结

深浅拷贝和直接赋值:总结就是是否独立出新的对象
直接赋值:不会独立出新的对象
浅拷贝:独立的不完全,只是独立出父列表,子列表不独立
深拷贝:完全独立,父列表和子列表都是独立的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值