如何从静置列表
问题描述:
在蟒 “结合” 的变量停止蟒,代码如何从静置列表
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。所以也许我需要在底部代码中使用不同的符号?
答
a = [20, 21]
b = [20, 21]
print(a is b) # False
print(a == b) # True
print(id(a) != id(b)) # True
a
和b
具有相同的价值,但不指向同一个对象。
x = [1]
y = x
print(x is y) # True
print(x == y) # True
print(id(x) == id(y)) # True
x
和y
具有相同的值,并且是指相同的对象。
i = [0]
j = i[:] # Copy of i
print(i is j) # False
print(i == j) # True
print(id(i) != id(j)) # True
i
和j
具有相同的价值,但不指向同一个对象。
不,他们正在做同样的事情。阅读:https://nedbatchelder.com/text/names.html –
这里没有涉及的字符串(除了'print'完成的转换),你拥有的是* list *。像列表这样的* mutable *对象上的'y = x'只是一个引用赋值,它们引用的对象是相同的。 – cdarke
这是因为'x'和'y'指的是同一个对象。 – srig