将列表分配给另一个不会同步它们

时间:2018-09-02 05:55:52

标签: python python-3.x

我看到了一篇有关如何将列表分配给另一个人的文章,其中包含以下代码:

a=[1]
b=a
print(a)
print(b)
a=[2]
print(a)
print(b)

这是非常基本的,应该返回:

[1]
[1]
[2]
[2]

相反,它返回:

[1]
[1]
[2]
[1]

这显然是因为变量不同步。我想知道为什么会这样,是因为没有同步,还是在python 3.7.0上不起作用?

1 个答案:

答案 0 :(得分:0)

执行a=[2] 创建另一个引用,因此ab变量名之间的链接断开。

要为a保留相同的引用,请使用 slice分配,它可以重用a引用(并且如果与以前的值不同,也可以增加/缩小列表的大小)

a[:] = [2]

(在您的特定情况下,如果您只想更改列表的值,只需更改a[0] = 2之类的元素)