Python 列表中的浅拷贝与深拷贝

将一个列表添加到另一个列表中时,可以有以下操作:

lst1 = [1, 2, 3]
lst2 = [lst1]
print(lst2)     # 输出为:[[1, 2, 3]]
lst1[1] = 4
print(lst2)     # 输出为:[[1, 4, 3]]

lst3 = []
lst3.append(lst1)
print(lst3)     # 输出为:[[1, 4, 3]]
lst1[1] = 5
print(lst3)     # 输出为:[[1, 5, 3]]

其中lst2 = [lst1]与lst3.append(lst1)相同,都是浅拷贝,当原列表内容发生改变时,新列表的内容会跟着发生改变。

如果想要深拷贝,可以使用如下方法:

lst1 = [1, 2, 3]
lst4 = lst1[:]
print(lst4)     # 输出为:[1, 2, 3]
lst1[1] = 4
print(lst4)     # 输出为:[1, 2, 3]

lst5 = [lst1[:]]
print(lst5)     # 输出为:[[1, 4, 3]]
lst1[1] = 5
print(lst5)     # 输出为:[[1, 4, 3]]

lst6 = []
import copy
lst6.append(copy.deepcopy(lst1))
print(lst6)     # 输出为:[[1, 5, 3]]
lst1[1] = 6
print(lst6)     # 输出为:[[1, 5, 3]]
原文地址:https://www.cnblogs.com/wbz-blogs/p/12779249.html