首页 > 编程语言 > 详细

python(深浅拷贝)

时间:2020-09-12 16:57:55      阅读:55      评论:0      收藏:0      [点我收藏+]

深浅拷贝

变量赋值相当于贴标签

浅拷贝

#在同一代码块下:
a1 = [1,2, [3,1]]
b1 = a1.copy()

b1相当于在内存中重新开辟了一块新的内存地址,与a1不的id不同.不过其内部元素引用是公用的

# 在不同代码块下:
也是同理

技术分享图片

深拷贝

# 同一代码块下
import copy
l1 = [1, ‘alex‘, True, (1,2,3), [22, 33]]
l2 = copy.deepcopy(l1)
print(id(l1), id(l2))  # 2788324482440 2788324483016  #
print(id(l1[0]),id(l2[0]))  # 1470562768 1470562768
print(id(l1[-1]),id(l2[-1]))  # 2788324482632 2788324482696
print(id(l1[-2]),id(l2[-2]))  # 2788323047752 2788323047752



for i in range(len(l1)-1):
...     print(id(l1[i]), id(l2[i]))
...     
140704271531072 140704271531072  #0  公用
1986645091248 1986645091248			#1  公用
140704271028752 140704271028752		#2  元组公用
1986645375080 1986645375080		#3		可变的不共用重新创建


对于深拷贝来说,

技术分享图片

思考:

1.浅拷贝的定义,深拷贝的定义.

答案:

浅拷贝的列表在内存中重新创建,列表内的元素都是公用的

深拷贝的列表在内存中重新创建,列表内不可变元素是公用的,可变元素即(列表)是重新创建的

python(深浅拷贝)

原文:https://www.cnblogs.com/sunnywillow/p/13657554.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!