Python 深浅Copy

Python 深浅Copy

l1 = [1,2,3]
l2 = li				#相当于标签 为同一地址而已
l1.append(4)
print(l1)  #l1=[1,2,3,4]
print(l2)  #l2=[1,2,3,4]
#浅拷贝 只copy外壳 内部为原地址
l1 = [1,2,3]
l2 = l1.copy()
l1.append(666)
#l1 = [1,2,3,666]
#l2 = [1,2,3]
#浅拷贝 只copy外壳 内部为原地址
l1 = [1,2,3,[22,33]]
l2 = l1.copy()
l1[-1].append(6)
#l1 = [1,2,3,[22,33,6]]
#l2 = [1,2,3,[22,33,6]]

深copy

python 对deepcopy进行了优化,不可变的数据类型(int,str...) 仍然沿用同一个内存

import copy
l1 = [1,2,3,[22,33]]
l2 = copy.deepcopy(l1)
li[-1].append(666)
#l1 = [1,2,3,[22,33,666]]
#l2 = [1,2,3,[22,33]]

相关面试题

l1 = [1,2,3,[22,33]]
l2 = l1[:]			#切片为浅copy
l1[-1].append(666)
#l1 = [1,2,3,[22,33,666]]
#l2 = [1,2,3,[22,33,666]]

浅copy:嵌套的可变的数据类型是同一个

深copy:嵌套的可变的数据类型不是同一个

posted @ 2019-12-12 16:16  Jerry-1  阅读(283)  评论(0编辑  收藏  举报