ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python中直接复制,浅拷贝,深拷贝

2020-07-02 15:01:29  阅读:217  来源: 互联网

标签:python 对象 复制 print deepcopy 拷贝 copy append


  • 直接复制:其实就是对象的引用
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象
  • 深拷贝(deepcopy):完全拷贝父对象及其子对象

字典浅拷贝:

>>> a = {1:[1,2,3]}
>>> b = a.copy()
>>> a,b
({1: [1, 2, 3]}, {1: [1, 2, 3]})
>>> a[1].append(4)
>>> a,b
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深拷贝:

>>> import copy
>>> c = copy.deepcopy(a)
>>> a,c
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
>>> a[1].append(5)
>>> a,c
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

1. b=a:赋值引用,a和b都指向同一对象。

 

 2. b=a.copy(): 浅拷贝,a和b是独立的对象,但他们的子对象还是指向同一对象(是引用)

 

 3. b=copy.deepcopy(a): 深拷贝,a和b完全拷贝了父对象和子对象,两者是完全独立的;

 

 关于深拷贝和浅拷贝实例:

>>> import copy
>>> a = [1,2,3,4,['a','b']]            #原始对象
>>> b = a                              #赋值,传对象的引用
>>> c = copy.copy(a)            #浅拷贝
>>> d = copy.deepcopy(a)               #深拷贝
>>> a.append(5)                        #修改对象a
>>> a[4].append('c')                   #修改对象a中['a','b']数组对象
>>> print('a = ',a)
a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> print('b = ',b)
b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> print('c = ',c)
c =  [1, 2, 3, 4, ['a', 'b', 'c']]
>>> print('d = ',c)
d =  [1, 2, 3, 4, ['a', 'b', 'c']]

 

标签:python,对象,复制,print,deepcopy,拷贝,copy,append
来源: https://www.cnblogs.com/homle/p/13224781.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有