在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']]