意外的列表突变
创建类似 v = [0,0,0,0,0,0,0,0 的列表时,0],您可能会假设将新列表分配给变量会创建一个单独的引用。然而,像下面这样的代码可能会表现出意外的行为:
vec = v
vec[5] = 5
vec 和 v 现在都在索引 5 处包含值 5。为什么会发生这种情况?
引用赋值
在Python中,列表是可变对象。分配 vec = v 不会创建列表的新副本。相反,它分配对 v 的引用。 vec 和 v 都指向内存中相同的基础列表对象。
对 vec 或 v 进行的任何修改都会影响原始列表,因为它们是相同的列表。这就是为什么当 vec[5] 改变时,v 也会改变。
解决方案
要创建列表的单独副本,请使用 list() 函数:
vec = list(v)
这将创建一个新的列表对象,其中包含 v 中元素的副本。对 vec 所做的任何更改都不会影响 v,反之亦然.
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3