Python的浅拷贝与深拷贝是什么?有什么区别?

2022-12-20 0 798

Python的浅拷贝与深拷贝是什么?有什么区别?

copy.copy 浅复本 只复本父第一类,不能复本第一类的外部的子第一类。

copy.deepcopy 深复本 复本第一类或其子第一类

两个较好的范例:

import copy

a = [1, 2, 3, 4, [a, b]] #原初第一类

b = a #表达式,传第一类的提及

c = copy.copy(a) #第一类复本,浅复本

d = copy.deepcopy(a) #第一类复本,深复本

a.append(5) #修正第一类a

a[4].append(c) #修正第一类a中的[a, b]字符串第一类

print a = , a

print b = , b

print c = , c

print d = , 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]]

下面两个范例可以看看:

1234567891011

import copy

= [1, 2, 3, 4, [a, b]] #原初第一类

= a #表达式,传第一类的提及

=copy.copy(a) #第一类复本,浅复本

= copy.deepcopy(a) #第一类复本,深复本

a.append(5) #修正第一类a

a[4].append(c) #修正第一类a中的[a, b]字符串第一类

print a = , a

print b = , b

print c = , c

print d = , d

然后自己想一想输入都应该是甚么

a是原初第一类,作为对照

b是a的提及,和a指向同两个第一类

c是a的两个浅复本,将a的内容复本过来了,就是和a平行的两个第一类了,但是里面元素如果是第一类,仅复本其提及,即a[4]变化后c[4]也对应变化了,因为他俩实际指向同两个第一类,而a和c指向不同的第一类

d则是从头到尾全部复本过来,就连里面的第一类也复本了一份,因此a[4]变化而d[4]没有变化,因为a[4]和d[4]在复本的时候值一样,但是其实已经是两个第一类了。

下面是上面内容的输入结论。

1234

= [1, 2, 3, 4, [a, b, c], 5]

=[1, 2, 3, 4, [a, b, c], 5]

= [1, 2, 3, 4, [a, b, c]]

= [1, 2, 3, 4, [a, b]]

以上便是小编对“Python的浅复本与深复本是甚么?有甚么区别?”的大致介绍,希望对您有所帮助!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务