python之拷贝
1.赋值拷贝
这种拷贝又称引用拷贝,本质是创建一个指向被拷贝列表的引用, 他们使用的是同一块内存区域, 因为无论更改其中任何一个变量, 我们被拷贝的变量也会跟着改变。
例如: list1 = [1,2,3,4], list2 = list1, 此时list2的值与地址跟list1一样, 如果改变list1或者list2中的某个值, 另一个里的内容也要改变.
2.浅拷贝
浅拷贝是一维内存拷贝, 又称不完全拷贝, 对于多维的列表, 还会有内存公用的情况, 使用的时候是 变量名.copy
例如: list1 = [1,2,3,4], list2 = list1.copy, 此时list1与list2的值一样, 但是存放的地址不一样,如果改变list1或者list2中的某个值, 另一个不会跟着改变 .
对于多维列表来说, 例如: list1 = [1,2,3,[1,2,3]], list2 = list1.copy, 此时与上面的一维列表一样, 但是你如果改变list1或者list2里面的那个列表里面的值, 那另一个也会跟着改变, 而且list1与list2里面的那个列表的地址一样, 但是list1和list2的地址不一样.
3.深拷贝
又称完全内存拷贝, 将多维列表中的内容递归的复制一遍, 重新存储到一块新的内存空间, 因此在深拷贝不会出现内存公用的情况。使用这种拷贝的时候, 要导入copy模块.
例如: import copy list1 = [1,2,3,4], list2 = copy.deepcopy(list1), 此时list1与list2的值一样, 但是存放的地址不一样, 如果改变list1或者list2中的某个值, 另一个不会跟着改变 .而且, 对于多维列表来说也一样.