HMHYY 2020-04-30
# 可变: list ,dict ,set(集合) # 不可变: int bool str tuple# 有序: list,tuple,str,int,bool # 无序: dict(python3.6以后可以是有序的了),set# 取值方式: # 索引: str list tuple # 直接: set ,int ,bool # 键: dict
import copy lst1=[1,2,3] lst2=copy.copy(lst1)#浅拷贝 lst3=copy.deepcopy(lst1)#深拷贝 lst4=lst1 #赋值
定义:
浅拷贝只拷贝第一层(如果有列表嵌套,他会复制那一个索引位置的列表的内存地址,而那个列表内的数据不会复制,说白了就是共用内部的list,最外层的list是自己新建的)
可变类型拷贝,不可变类型共用(列表嵌套时,内层的列表地址不会复制,因为list是可变的,他是自己创个内部的list,然后共用list内的不可变元素的地址)
注:
如果发生了拷贝,内存地址一定发生变化,说白了拷贝就是自己新建地址,放复制过来的内容.
如下图:深浅拷贝如果只拷贝一个单一的列表(列表内不包含字典列表等可变元素)的情况下,深浅拷贝效果都一样:
重点(这里要着重理解):
列表内部加了列表后(深浅拷贝就不一样了):