【问题标题】:Why two different simple list variables behave exactly like each other? [duplicate]为什么两个不同的简单列表变量的行为彼此完全一样? [复制]
【发布时间】:2019-02-03 20:01:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: python-3.x algorithm arraylist


    【解决方案1】:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 2018-07-07
      • 2021-02-20
      • 1970-01-01
      相关资源
      最近更新 更多