我有以下代码:
def proc1(p):
p.append(1)
x=[2,5]
proc1(x)
print(x)
def proc2(p):
p=p+[1]
y=[2,5]
proc2(y)
print(y)
z=[2,5]
z=z+[1]
print(z)
代码的输出是:
[2, 5, 1]
[2, 5]
[2, 5, 1]
我理解为什么x
和z
的价值变为[2,5,1]
。但我不明白为什么y
的价值保持不变。我认为在运行proc2(y)
后,y
应该提到[2,5,1]
。
我的观点是,我知道y不是修改/变异到[2,5,1]
。但是y 被重新分配到新列表,这是[2,5,1],对吗?那你为什么还要提到原来的价值? 如果z的值发生了变化,为什么不改变?
我已经检查了问题What's the difference between plus and append in python for list manipulation,但我仍然感到困惑。