码迷,mamicode.com
首页 > 编程语言 > 详细

python学习之深浅拷贝

时间:2018-06-13 19:41:42      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:ict   别名   end   文件   也会   pytho   浅拷贝   epc   str   

深浅拷贝

浅拷贝:

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学习之深浅拷贝

标签:ict   别名   end   文件   也会   pytho   浅拷贝   epc   str   

原文地址:https://www.cnblogs.com/sunxiuwen/p/9179293.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!