"""
元祖无copy
浅拷贝: 相当于新建一个副本到新的地址里面,里面各个对象和各个源共用一个地址,修改副本里面的内容 不改变原对象
在原对象中修改 会映射到副本中
list1=[1,2,4,5,6,7]
list2=list1.copy(list1)
list3=copy.copy(list1)
对于内部可变类型对象,公用一个地址,内容改变,地址不变,所以会映射到其他
对于内部不可变类型对象: 公用一个地址,内容改变,地址也改变 所以不会映射到其他
深拷贝
import copy
copy.deepcopy()
list1=[1,2,4,5,6,7]
list2=copy.deepcopy(list1)
不可变类型:
公用一个地址,内容改变 地址也改变 所以不会映射到其他
可变类型:
重新开辟空间新的地址,内容改变地址不变,所以不会映射到其他
"""
import copy
list1 = ['黎柘', 20, '男', ['贾玲', '娜扎', '热巴']]
list2 = copy.deepcopy(list1)
print(id(list1), id(list2))
print('---------list1----------')
for e in list1:
print(e, id(e))
print('---------list2----------')
for e in list2:
print(e, id(e))
list2[3].append('杨紫')
print('*' * 50)
print('---------list1----------')
for e in list1:
print(e, id(e))
print('---------list2----------')
for e in list2:
print(e, id(e))
list2[0] = '鑫政'
print(list1)
print(list2)
list1 = [3, 5, 8, 9, ['a', 'b', 'c']]
list2 = list1.copy() # 浅拷贝
list2.remove(9)
print(list1, list2)
# list1: [3, 5, 8, 9, ['a', 'b', 'c']]
# list2: [3, 5, 8, ['a', 'b', 'c']]
#
# list2[4].append('hello')
# print(list1, list2)
# list1: [3, 5, 8, 9, ['a', 'b', 'c', 'hello']]
# list2: [3, 5, 8, ['a', 'b', 'c', 'hello']]
python基础浅拷贝(copy),与深度拷贝(deepcopy)
最新推荐文章于 2024-04-18 07:00:05 发布