如何从静置列表

问题描述:

在蟒 “结合” 的变量停止蟒,代码如何从静置列表

x = 0 
y = x 
y = 1 
print x 

返回 “0”,而代码

x = [0] 
y = x 
y[0] = 1 
print x 

返回 “[1]”。 为什么python将列表与整数的处理方式如此不同,我能做些什么来强制它将底部“x”视为顶部“x”?似乎在各个第二行中的'='意味着不同的东西 - 顶部只影响y,而底部以某种方式将x绑定到y。所以也许我需要在底部代码中使用不同的符号?

+3

不,他们正在做同样的事情。阅读:https://nedbatchelder.com/text/names.html –

+2

这里没有涉及的字符串(除了'print'完成的转换),你拥有的是* list *。像列表这样的* mutable *对象上的'y = x'只是一个引用赋值,它们引用的对象是相同的。 – cdarke

+0

这是因为'x'和'y'指的是同一个对象。 – srig

a = [20, 21] 
b = [20, 21] 

print(a is b) # False 
print(a == b) # True 
print(id(a) != id(b)) # True 

ab具有相同的价值,但不指向同一个对象。

x = [1] 
y = x 

print(x is y) # True 
print(x == y) # True 
print(id(x) == id(y)) # True 

xy具有相同的值,并且是指相同的对象。

i = [0] 
j = i[:] # Copy of i 

print(i is j) # False 
print(i == j) # True 
print(id(i) != id(j)) # True 

ij具有相同的价值,但不指向同一个对象。