Skip to main content
 首页 » 编程设计

python之更改一个列表会更改另一个列表

2025年05月04日22emanlee

当我更改一个列表时,另一个列表也随之更改。

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)