拷贝和深浅拷贝

深浅拷贝

一、拷贝(赋值)

当list2为list的拷贝对象时,list内的可变数据类型变化,list2变化;list内的不可变数据类型变化,list2 变化。总之、list变化list2一定变化

list = [1,2,3,4,]
list2 = list
list.append(5)
print(list)
print(list2)

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]

二、浅拷贝 (copy.copy)

当list2为list的拷贝对象时,list内的不可变数据类型变化,list2 不会发生变化

import copy
list = [1,2,3,4]
list2 = copy.copy(list)
list.append(6)
print(list)
print(list2)

[1, 2, 3, 4, 6]
[1, 2, 3, 4]

当list2为list的拷贝对象时,list内的可变数据类型变化,list2变化,这里的[5,6,7]就是个可变数据类型啊!

import copy
list = [1,2,3,4,[5,6,7]]
list2 = copy.copy(list)
# list[-1].append(2)     #这种是直接在列表后面进行添加
list[-1].insert(1,8)     #这种是插入、可以指定在列表任意位置插入
print(list)
print(list2)

[1, 2, 3, 4, [5, 5, 6, 7]]

[1, 2, 3, 4, [5, 5, 6, 7]]

三、深拷贝

当list2为list的拷贝对象时,list内无论是可变类型变化还是不可变数据类型变化,list2都不会发生变化

import copy
list = [1,2,3,4,[5,6,7]]
list2 = copy.deepcopy(list)
list[-1].append(9)
print(list)
print(list2)

[1, 2, 3, 4, [5, 6, 7, 9]]
[1, 2, 3, 4, [5, 6, 7]]

牢记:拷贝/浅拷贝/深拷贝/只针对可变数据类型

拷贝 浅拷贝 深拷贝
list变化list2变化 list可变数据类型变化,list2变化
list不可变数据类型变化,list2不变化
list变化,list无变化
posted @ 2019-08-08 17:13  旧时光清风  阅读(111)  评论(0编辑  收藏  举报