当我更改一个列表时,另一个列表也随之更改。
a = [[1, 1], [2, 2], [3, 3]]
b = list(a)
a[0][0] = 100
print(a)
print(b)
当我这样做时,a 是 [[100, 1], [2, 2], [3, 3]]。 b 也是 [[100, 1], [2, 2], [3, 3]]
b = a[:] 也不能解决问题。
为什么会这样?
请您参考如下方法:
您所做的是浅拷贝。浅拷贝和深拷贝之间的区别仅与复合对象(包含其他对象的对象,如列表或类实例)有关:
浅拷贝构造一个新的复合对象,然后(在可能的范围内)向其中插入对在原始对象中找到的对象的引用。 深拷贝构造一个新的复合对象,然后递归地将在原始对象中找到的对象的副本插入其中。
你想做的是创建一个全新的对象,这样一个对象就不会干扰另一个对象。以下是如何进行深拷贝。
import copy
a = [[1, 1], [2, 2], [3, 3]]
b = copy.deepcopy(a)
a[0][0] = 100
print(a)
print(b)
