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

Why two different simple list variables behave exactly like each other?

本问题已经有最佳答案,请猛点这里访问。

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

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

变量"b"必须是[3,2,4],而"a"必须是[2,3,4]。但结果是:

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

为什么这两种类型都有?我认为这只发生在列表上,因为我试图写下面的代码:

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

变量"dots"将是一个列表,但之后无论我对"dots"列表做什么,wholedots变量都会像点一样发生变化。

有人知道为什么会这样吗?


B=A不实例化新列表,B只是A的别名,所以A上的每个操作都会影响B。您应该这样做:

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