深浅拷贝

浅拷贝

# 浅拷贝就是从新开辟一块内存空间作为容器
# 拷贝引用, 没有拷贝值

方法一:
li = [1, 2, 3, 4]
li2 = li.copy()

方法二
import copy
li2 = copy.copy(li)

深拷贝

# 深拷贝是从新开辟内存空间
# 把元素值拷贝下来, 没有拷贝引用
li = [1, 2, 3, [1, 2, 3, [1, 2, 3, [151, 20]]]]
li2 = copy.deepcopy(li)
li = [1, 2, 3, 4, [1, 'a']]
# 切片操作属于浅拷贝
li2 = li[:]
li[-1][-1] = 0

print(li, li2)    # [1, 2, 3, 4, [1, 0]] [1, 2, 3, 4, [1, 0]]
print(li is li2) # False

# 第二层的list地址相同
print(li[-1] is li2[-1]) # True

你可能感兴趣的:(深浅拷贝)