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

ami*_*idi 2 algorithm arraylist python-3.x

发生在我身上的事很奇怪.当我写下这段代码时:

a = [3,2,4]
b = a
a.sort()
print(a)
print(b)
Run Code Online (Sandbox Code Playgroud)

变量"b"必须是[3,2,4],"a"必须是[2,3,4].但结果出来了:

[2, 3, 4]
[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

为什么要对它们进行排序?我认为它只发生在列表中,因为我试着写下面的代码:

dots = dotsDetecter(param).getDots()
wholeDots = dots 
Run Code Online (Sandbox Code Playgroud)

变量"dots"将成为一个列表,但在此之后无论我对"点"列表做什么,wholeDots变量都会像点一样变化.

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

Pao*_*era 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)
Run Code Online (Sandbox Code Playgroud)