当我更改一个列表时,另一个列表也随之更改。
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)
关于python - 更改一个列表会更改另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41605086/