Skip to main content
 首页 » 编程设计

python之为什么这个赋值语句不是单向的

2025年05月04日12xing901022

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

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用于从给定集合中提取子集。我们只是省略了开始和结束位置(它们分别默认为集合的开始和结束)。