这个问题很容易理解,这是程序-

hisc = [1,2,3,4]
print("\n", hisc)

ohisc = hisc
hisc.append(5)

print("\nPreviously...", ohisc)
print("\nAnd now...", hisc)
input("\nETE")


当我运行它时,ohisc得到5。为什么ohisc变化?如何阻止它更改?
抱歉,这很明显。

最佳答案

Python variables are references。这样,赋值将复制引用而不是变量的内容。

为了避免这种情况,您要做的就是创建一个新对象:

ohisc = list(hisc)


这使用list constructor从给定的可迭代对象创建一个新列表。

或者,您也可以从切片中分配(创建新对象):

ohisc = hisc[:]


[]general slice operator,用于从给定集合中提取子集。我们只需忽略开始和结束位置(它们分别默认为集合的开始和结束)。

关于python - 为什么此分配声明不是单向的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15418900/

10-13 08:03