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, 则产生的是深拷贝, 列表里不会对参数产生修改

 

posted @ 2019-04-25 20:57  douzujun  阅读(296)  评论(0编辑  收藏  举报