Python3 —— 列表的浅拷贝 与 深拷贝

列表在拷贝过程中需注意的小细节!!!

# 原始列表
person = ['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']
print(person)

# 赋值
copy1 = person
print(copy1)

import copy
# 浅拷贝
copy2 = person.copy()
print(copy2)

copy3 = copy.copy(person)
print(copy3)

copy4 = person[:] # 全切片
print(copy4)

copy5 = list(person)
print(copy5)

#深拷贝
copy6 = copy.deepcopy(person)
print(copy6)

print('------------修改原始列表----------------')

person [0] = 'laozhao'
person [3][0] = 1234

print('原始修改', person)
print('变量赋值', copy1) # 赋值的是list列表的地址,所以都改变
print('浅拷贝  ', copy2) # 列表里嵌套的列表跟着变,因为拷贝的是嵌套列表的地址
print('浅拷贝  ', copy3)
print('浅拷贝  ', copy4)
print('浅拷贝  ', copy5)
print('深拷贝  ', copy6) # 拷贝原始列表的值,原始列表改变不影响拷贝后的值

 ['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']
['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']
['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']
['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']
['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']
['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']
['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']
------------修改原始列表----------------
原始修改 ['laozhao', 'qian', 'sun', [1234, 2, 3, 4], 'li']
变量赋值 ['laozhao', 'qian', 'sun', [1234, 2, 3, 4], 'li']
浅拷贝   ['zhao', 'qian', 'sun', [1234, 2, 3, 4], 'li']
浅拷贝   ['zhao', 'qian', 'sun', [1234, 2, 3, 4], 'li']
浅拷贝   ['zhao', 'qian', 'sun', [1234, 2, 3, 4], 'li']
浅拷贝   ['zhao', 'qian', 'sun', [1234, 2, 3, 4], 'li']
深拷贝   ['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li']

拷贝之后修改原始列表,不同的拷贝方式有不同的结果,所以在拷贝时,分清是浅拷贝和深拷贝很重要,避免采坑!

猜你喜欢

转载自blog.csdn.net/Muzi_Water/article/details/81479848
今日推荐