为啥两个不同的简单列表变量的行为彼此完全一样? [复制]
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)
【讨论】:
以上是关于为啥两个不同的简单列表变量的行为彼此完全一样? [复制]的主要内容,如果未能解决你的问题,请参考以下文章