python 中的浅拷贝 深拷贝 引用

2019-03-16  本文已影响0人  默写年华Antifragile
import copy
a = [1,2,3,4,[5,6,7]]
a_1 = a # 对a的引用
a_copy = copy.copy(a) # 对 a 的浅拷贝
a_deep = copy.deepcopy(a) # 对 a 的 深拷贝

1. 引用

a_1 = a
等价于 a_1与a 完全相同,指向与同一个地址,无论改变 a 还是改变 a_1, 另外一个都会发生改变

2. 浅拷贝

a_copy = copy.copy(a)
只会拷贝浅层次的元素,即第一级元素,深成次的不会拷贝,依然是引用,即上例中的 a[0], a[1], a[2], a[3]会拷贝,而最后一个元素是一个 list,因此不会被拷贝;即改变 a 中的a[0], a[1], a[2], a[3],浅拷贝 a_copy 不会发生变化,但 改变 a[4](即 a 中的 list)会导致 a_copy 发生变化

3. 深拷贝

a_deep = copy.deepcopy(a)
深拷贝相较于浅拷贝会复制其深层次的元素,与原来的 a 没有任何关系,只是值相同的两个变量而已,深拷贝与原对象不会对对方造成影响.


注意以下代码:

4. 分片操作

参考:https://blog.csdn.net/w494675608/article/details/82114798

上一篇 下一篇

猜你喜欢

热点阅读