【发布时间】:2020-04-28 08:35:47
【问题描述】:
def f():
list_0 = [1,2,3,4]
p = [0,1,2,3,4,5,6,7,8]
for i in list_0:
x = p
x[i] ="L"
print(x)
print(p)
f()
希望结果是: 0,"L",2,3,4,5,6,7,8 , 0,1,"L",3,4……等等, 但是得到了, 0,"L",2,3,4,5,6,7,8 , 0,"L","L",3,4,5,6,7,8.. 所以一,“L”被保存了 .如何更改代码以使变量 p 不变并保持不变
【问题讨论】:
-
x = p使 x 和 p 指向 相同的对象。 变量没有被重新定义,你只是在改变同一个对象,被两个不同的变量引用。 -
问题的发生只是因为
x被分配给同一个p。所以,当x改变时,p也会改变。要解决这个问题,您需要从p创建一个副本,如下所示:x = p.copy()