浅拷贝与深拷贝

1、浅拷贝的三种形式

```
import copy
jack = ['jack',['age',20]]
tom = jack[:]
anny = list(jack)
zroad = copy.copy(jack)

2、深拷贝与浅拷贝的区别:

tom[0] = 'tom'
anny[0] = 'anny'
zroad[0] = 'zroad'
print jack,'\n',tom,'\n',anny,'\n',zroad
"""
浅拷贝输出结果:修改第一个元素,均改变,是因为第一个元素为字符串为不可变元素:
['jack', ['age', 20]] 
['tom', ['age', 20]] 
['anny', ['age', 20]] 
['zroad', ['age', 20]]
"""

tom[1][1] = 25
anny[1][1] = 30
zroad[1][1] = 35
zroad[1][0] = "AGE"
print jack,'\n',tom,'\n',anny,'\n',zroad
"""
浅拷贝修改第二个元素,所有的拷贝元素的值都统一改变成同一值:
['jack', ['age', 35]] 
['tom', ['age', 35]] 
['anny', ['age', 35]] 
['zroad', ['age', 35]]
"""

"""
结论:浅拷贝外层拷贝的是对象(变量tom,anny,zroad),内部元素拷贝的是引用
"""

ZROAD = copy.deepcopy(jack)
ZROAD[0] = 'ZROAD'
ZROAD[1][1] = 40
ZROAD[1][0] = 'age'
print jack,'\n',ZROAD
"""
['jack', ['AGE', 35]] 
['ZROAD', ['age', 40]]
结论:深拷贝外层拷贝的是对象,内部元素拷贝的也是对象,深拷贝后的对象同原来的是各自独立的,互不影响
"""

3、浅拷贝与深拷贝的区别整理:

  • 浅拷贝外层拷贝的是对象(变量tom,anny,zroad),内部元素拷贝的是引用
  • 深拷贝外层拷贝的是对象,内部元素拷贝的也是对象,深拷贝后的对象同原来的是各自独立的,互不影响
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值