Python中copy()和deepcopy()的区别

copy:在python中,copy是属于浅复制,什么是浅复制呢?也就是在复制的时候复制了对象的本身,但是对于对象中所引用的对象没有复制,所谓的对象所引用的对象就相当于列表的嵌套,即列表中有一些元素又是列表,例如:list=[[1,2,3],2,3,4,5]list中有一个元素是[1,2,3],那么[1,2,3](设为list1)就相当于list所引用的一个对象:


当有表达式:  list2 = list.copy()时,对于list中的一般元素,就是把实际对象复制给list2,但是list中的元素类型为列表的,仅仅是把引用的地址复制给list2,也就是在list2和list中的第一个元素引用是同一个对象,所以当有一个发生改变时,另外一个的该元素也会发生变化,而其它元素是把对象的本身复制,所以当任何一个发生变化时,只是把这个元素指向修改后的元素的地址,而另外一个对应的值指向的内存地址不会因为上一个的改变而改变.

 

deepcopy:深度复制,就是把list中的元素list[0]的本身会复制一份给list2,也就是在经过此表达式后,list2中元素为列表的会新生成一个内存地址存放,所以这两个列表的list[0]和list2[0]所指向的内存地址不会相同,如下:

                                                    

所以当任何一个中元素为可变类型的数据发生改变是,经过深复制后的另外一个列表中同样的可变类型的数据不会发生改变

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值