深浅拷贝

浅拷贝,对象如果包含有可变类型元素,那么可变类型元素只是拷贝了内存地址的引用,并非两个独立内存

 

如:a=[1, 2, 3, [1, 2]],里面的元素[1, 2]只是拷贝了内存地址的引用,改变[1,2]里面的内容,a的内存地址不会发生改变


深拷贝,拷贝之间的内存地址相互独立,修改里面的可变类型数据不会影响其它对象

 

b=a 和 b=a.copy()是完全不相同的两种东西

 

深拷贝

import copy

copy.deepcopy()

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
浅拷贝,只是拷贝了内存地址的引用,并非两个独立内存
深拷贝,拷贝之间的内存地址相互独立,修改里面的可变类型数据不会影响其它对象
import copy
deepcopy()
"""
# c1 = [1, 2, 3, 4]
# c2 = c1.copy() # [1, 2, 3, 4]
# print(c2)
# c1[3] = 5  # [1, 2, 3, 5]
# print(c1)

# # 浅拷贝,修改可变类型数据时,会影响拷贝对象
# c1 = [1, 2, 3, [4, 5]]
# c2 = c1.copy()  # [1, 2, 3, [4, 5]]
# print(c2)
# c1[3][0] = 5
# print(c1)  # [1, 2, 3, [5, 5]]
# print(c2)  # [1, 2, 3, [5, 5]]
# id1 = id(c1[3])
# id2 = id(c2[3])
# print(id1, id2)  # 10622792 10622792

#import copy
#c1 = [1, 2, 3, [4, 5]]
#c2 = copy.deepcopy(c1)  # [1, 2, 3, [4, 5]]
#id1 = id(c1[3])
#id2 = id(c2[3])
#print(id1, id2)  # 18650248 18650312
View Code

 

posted @ 2018-08-15 22:55  李小样  阅读(39)  评论(0编辑  收藏  举报