python的深拷贝与浅拷贝

在python中,对于变量赋值,比如a=1,实际上变量a存储的对象的存储地址,对于可变数组如:list1=list1=['a',1,['appple','banner']],实际数据存储如下:
list1=['a',1,['appple','banner']]


数组.png
  • 变量的赋值操作:
    list2=list1 实际上相当于声明一个变量list2,指向同一块内存地址,若对list1进行增删改操作后,list2也受到影响。
list1=['a',1,['appple','banner']]
list2=list1
list1.append(3)
print(list2)   #输出['a', 1, ['appple', 'banner'], 3]
  • 变量的浅拷贝:变量浅拷贝,相当于声明一个新的变量,新开辟一块内存块,并且变量指向新的内存,但是指向的数值地址不变。如果对原数组中的可变对象进行操作,新数组也会改变。
import copy
list1=['a',1,['appple','banner']]
list2=list1.copy()
list1[2][1]='banana'
print(list2) #['a', 1, ['appple', 'banana']]

  • 变量的深拷贝 相当于声明一个变量,新开辟一块内存,并且内存中变量的指向内存也复制一份
import copy
list1=['a',1,['appple','banner']]
list2=copy.deepcopy(list1)
list1[2][1]='banana'
print(list2)  #输出:['a', 1, ['appple', 'banner']]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容