python学习之深浅拷贝

Posted Alive

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之深浅拷贝相关的知识,希望对你有一定的参考价值。

深浅拷贝

浅拷贝:

1、针对的是可变数据类型:list、dict、set  ,不可变数据类型int、str、tuple、bool 是没有拷贝一说的,他们都没copy() 方法

2、浅拷贝后是在内存地址中分配了一份新的地址,且浅拷贝只拷贝了第一层,第二层不会拷贝,故第二层如果改变,原数据及浅拷贝后的数据也将改变

3、= 赋值不是浅拷贝,[:] 切片是浅拷贝

a = [11,22,[11,22]]

b = a  

注:以上称为赋值,只是将a,b都指向了同一个内存地址

a.append(33)

print(b)

>>> [11,22,[11,22],33]   还是一起改变,b和a都是列表的内存地址的两个别名

c = a.copy()   用方法copy是浅拷贝,id(a)  与 id(c)  的内存地址是不同的

3、切片是浅拷贝

1 lis = [11,22,[11,22]]
2 qie = lis[:]
3 lis[2].append(33)
4 print(lis,qie) # [11, 22, [11, 22, 33]] [11, 22, [11, 22, 33]]
5 print(id(lis),id(qie))   # 1482689615624 1482689615752

深拷贝:

就是将原文件内部元素完全拷贝,不会将因为第二层元素改变,另一个也会改变

深拷贝方法:

import  copy

list_new = copy.deepcopy()

以上是关于python学习之深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

我要学python之深浅拷贝原理

python 深浅拷贝

Python入门-深浅拷贝

python学习之第十五课时--存址方式及拷贝

python--is/id==,集合,深浅拷贝

python深浅拷贝