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’]]

发布了27 篇原创文章 · 获赞 45 · 访问量 1273

猜你喜欢

转载自blog.csdn.net/qq_43437122/article/details/103442417