每天分享
2018/7/31
1.深浅copy:
总结:
字符串中:
- 对于赋值操作而言:所有的赋值操作都是公用的一个内存地址。
- 如果改变了原有的数值的值,被赋值的变量的内存地址并不会发生变化,而改变了值的内存地址会发生变化。
在列表中:
- 对于列表的赋值操作:所有的赋值操作都是公用的一个内存地址,一个变量发生变化,另一个变量随之发生变化。内存地址依旧相同。
- 序列对象的切片其实是浅拷贝,即只拷贝顶级的对象
- 列表中的浅拷贝:原list变量的第一层,之后对新变量或者旧变量的第一层的修改不会影响到彼此,第二层以及更多层之间则是像第一中操作中一样,是互相影响的。
- 列表中的深拷贝:复制出来的与原来的变量没有任何关系,最清爽的复制
在元组中:
没有深浅copy
在集合中:
只有浅copy,和原来的集合对象没有任何关系
在字典中:
- 赋值操作也是浅copy
如果源拷贝对象只有一级目录的话,源做任何改动,不影响深浅拷贝对象
如果源拷贝对象不止一级目录的话,源对一级目录的子目录做任何改动,都会影响浅拷贝,但不影响深拷贝
深copy的使用方式:
import copy data = {'user':'admin','num':[1,2,3]} data2 = data.copy()
// 深copy的使用方式 data3 = copy.deepcopy(data) print(data2) print(data3)