意外的列表突变
创建类似 v = [0,0,0,0,0,0,0,0 的列表时,0],您可能会假设将新列表分配给变量会创建一个单独的引用。但是,如下代码可能会出现意外行为:
<code class="python">vec = v vec[5] = 5</code>
vec 和 v 现在都在索引 5 处包含值 5。为什么会发生这种情况?
引用赋值
在 Python 中,列表是可变对象。分配 vec = v 不会创建列表的新副本。相反,它分配对 v 的引用。 vec 和 v 都指向内存中相同的基础列表对象。
对 vec 或 v 进行的任何修改都会影响原始列表,因为它们是相同的列表。这就是为什么当 vec[5] 改变时,v 也会改变。
解决方案
要创建列表的单独副本,请使用 list() 函数:
<code class="python">vec = list(v)</code>
这将创建一个新的列表对象,其中包含 v 中元素的副本。对 vec 所做的任何更改都不会影响 v,反之亦然。
以上是为什么在 Python 中将列表分配给新变量不会创建单独的副本?的详细内容。更多信息请关注PHP中文网其他相关文章!