Python copy与deepcopy的区别

今天做了一道题目,如下
#############################
下面代码运行后,a、b、c、d四个变量的值,描述错误的是?
import copy
a = [1, 2, 3, 4, [‘a’, ‘b’]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append(‘c’)
############################
这道题目里面呢涉及到了list的赋值以及copy和deecopy,对于初学者而言可能很容易搞错普通赋值和copy有什么区别,下面一起去看下。
@b=a 这是把a赋值给b,如果之后a变了那么b也就随着a的变化而变化。但如果给a又重新赋值了,那么之后在改变a就不会影响b了。
@c = copy.copy(a) 浅拷贝,只拷贝父对象,不会拷贝父对象中的子对象,所以若a的子对象改变则c变,a的父对象改变c不会变。
@d = copy.deepcopy(a) 深拷贝,完全拷贝,完全独立于原对象,a变也不变
这道题目中后两步操作:
#a.append(5) 改变了父对象
#a[4].append(‘c’) 改变了子对象

这道题目的最后a,b,c,d的值应为:
#a=[1, 2, 3, 4, [‘a’, ‘b’,‘c’],5]
b=[1, 2, 3, 4, [‘a’, ‘b’,‘c’],5]
c=[1, 2, 3, 4, [‘a’, ‘b’,‘c’]]
d=[1, 2, 3, 4, [‘a’, ‘b’]]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值