Python中的直接赋值、深拷贝、浅拷贝

1.直接赋值

直接赋值只是传对象的引用而已,相当于两个变量同时指向一个地方,所以不论这两个变量哪一个改变,他们同时指向的地方都会改变。

list_1 = [1,2,3,[4,5]]
list_2 = list_1
print(list_1,list_2)
#  对list_2的内容赋值
list_2[0] = 0
print(list_1,list_2)


2.浅拷贝  copy()

当使用浅拷贝时,只是拷贝了最外围的对象本身,嵌套的内部元素都只是拷贝了一个引用而已。所以外围元素可以独立改变,内部元素其中一个赋值就会引起全部改变。

from copy import copy
list_1 = [1,2,3,[4,5]]
list_2 = copy(list_1)
print('初始情况   : ',list_1,list_2)
#  改变外围因素例如list_2中的1、2、3  发现list_1没有改变
list_2[0] = 0
print('改变外围因素:',list_1,list_2)
#  改变内部因素例如list2中的[4,5]  发现list_1改变了  因为内部元素浅拷贝只是传引用
list_2[3][0] = 0
print('改变内部因素:',list_1,list_2)


3.深拷贝  deepcopy()

对外围和内部元素都进行了拷贝对象本身,而不是对象的引用。简而言之,全部复制,相互独立,一套带走……

from copy import deepcopy
list_1 = [1,2,3,[4,5]]
list_2 = deepcopy(list_1)
print('初始情况   : ',list_1 ,list_2)
#  改变外围因素  发现list_1没有改变
list_2[0] = 0
print('改变外围因素:',list_1,list_2)
#  改变内部因素  发现list_1没有改变
list_2[3][0] = 0
print('改变内部因素:',list_1,list_2)


    总的来说,赋值就是传引用,一个改变就都改变。浅拷贝顾名思义拷贝得不彻底,一些嵌套的内部元素其中一个改变也会都改变。深拷贝厉害了,完全拷贝,相互对立,一切安好,互不干扰。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值