这个问题很容易理解,这是程序-
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/