为啥两个不同的简单列表变量的行为彼此完全一样? [复制]

Posted

技术标签:

【中文标题】为啥两个不同的简单列表变量的行为彼此完全一样? [复制]【英文标题】: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 变量都会像点一样发生变化。

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

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于为啥两个不同的简单列表变量的行为彼此完全一样? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Instant 在彼此之后打印时显示不同的值? [关闭]

Android 设计模式 笔记 - 状态模式

Android 设计模式 笔记 - 状态模式

为啥 Object 和 var 变量的行为不同?

c语言结构体能否整体赋值

为啥这些具有完全相同类别的按钮宽度不同?