在Python中,数组(列表)是可变对象,这意味着当你将一个列表赋值给另一个变量时,实际上只是创建了一个指向同一个对象的引用,而不是创建一个新的对象。因此,对其中一个变量的修改会影响到另一个变量。
当你错误地将一个列表赋值给另一个变量时,两个变量实际上指向同一个对象,因此对其中一个变量的修改会影响到另一个变量。
list1 = [1, 2, 3]
list2 = list1
list2[0] = 100
print(list1) # 输出: [100, 2, 3]
为了避免这种问题,可以使用以下几种方法:
list()
函数创建一个新的列表,但只复制一层。list1 = [1, 2, 3]
list2 = list1[:] # 或者 list2 = list(list1)
list2[0] = 100
print(list1) # 输出: [1, 2, 3]
print(list2) # 输出: [100, 2, 3]
copy
模块的deepcopy
函数创建一个完全独立的副本。import copy
list1 = [1, 2, [3, 4]]
list2 = copy.deepcopy(list1)
list2[2][0] = 100
print(list1) # 输出: [1, 2, [3, 4]]
print(list2) # 输出: [1, 2, [100, 4]]
通过以上方法,你可以避免在Python中错误地修改另一个数组的值。
领取专属 10元无门槛券
手把手带您无忧上云