与Python中的列表赋值混淆

时间:2017-11-24 11:41:34

标签: python python-3.x

我有以下代码:

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]

我理解为什么xz的价值变为[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,但我仍然感到困惑。

0 个答案:

没有答案