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

Python 3.x 为什么两个不同的简单列表变量的行为完全相同?,python-3.x,algorithm,arraylist,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”将是一个列表,但在那之后,无论我对“d

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

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变量都会像点一样变化


有人知道为什么会这样吗

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)