Python高级笔记(二) -- 深拷贝和浅拷贝
1. 列表复制 - 避免引用的副作用
1.1 list函数、分片操作、copy()方法
1.2 嵌套列表的复制
1.3 通过copy模块实现深拷贝
1. 深拷贝
1.1 类型1
注意: d没有改变, 因为d所拷贝的数据没有改变, 而是c往后添加数据。
1.2 类型2: 元组
如果copy.copy拷贝的是元组是深拷贝! 不会进行浅拷贝, 仅仅是指向, 因为元组是不可变类型, 因此用copy.copy的时候会自动判断.
2. 浅拷贝
2.1 类型1
2.2 类型2
-
如果 用copy.copy, copy.deepcopy对一个全部是不可变类型的数据进行拷贝, 那么他们结果相同, 都是引用指向
-
如果 拷贝的一个拥有 可变类型的数据, 即使元组是最顶层, 那么 deepcopy依然是 深拷贝, 而 copy.copy还是指向。
2.3 类型3: 切片是浅拷贝
2.4 类型4: 字典是浅拷贝
-
字典无序, 每一个key都通过哈希来得到
-
他们的value的值并不在字典里存放, 而是存放着引用 !
2.5 类型5: 函数的形参是列表(浅拷贝)
如果参数传入的是deepcopy, 则产生的是深拷贝, 列表里不会对参数产生修改