为什么两个不同的简单列表变量的行为彼此完全相同?

时间:2018-08-29 06:09:11

标签: python-3.x algorithm arraylist

我身上发生了非常奇怪的事情。当我写下这段代码时:

a = [3,2,4]
b = a
a.sort()
print(a)
print(b)

变量“ b”必须为[3,2,4],而“ a”必须为[2,3,4]。 但是结果出来了:

[2, 3, 4]
[2, 3, 4]

为什么对它们都进行排序? 我认为这只发生在列表上,因为我尝试编写以下代码:

dots = dotsDetecter(param).getDots()
wholeDots = dots 

变量“ dots”将成为一个列表,但是在此之后,无论我对“ dots”列表进行什么操作,都可以将WholeDots变量更改为类似于点。

现在有人为什么会这样吗?

1 个答案:

答案 0 :(得分:7)

b = a不会实例化新列表,b只是a的别名。因此,对a进行的所有操作也会影响b。您应该执行以下操作:

def main():
    a = [3, 2, 4]
    b = list(a) # create new list initialized with a values
    a.sort()
    print(a)
    print(b)