意外的列表突变:了解引用的影响
在 Python 中,列表变量表示对存储在内存中的数组的引用。将一个列表变量分配给另一个列表变量时(例如,vec = v),实际发生的情况是传递数组的地址,而不是复制数组本身。
这意味着对一个列表进行的任何修改都会也会影响指向同一内存地址的其他列表。例如,考虑以下代码:
<code class="python">v = [0,0,0,0,0,0,0,0,0] vec = v vec[5] = 5</code>
执行上述代码后,v 和 vec 都将包含以下值:
[0, 0, 0, 0, 0, 5, 0, 0, 0]
发生这种情况是因为 vec 和 v 都引用内存中的同一个数组。当 vec 中索引 5 处的值修改为 5 时,更改不仅会反映在 vec 中,还会反映在 v 中,因为两个变量都指向同一个底层数组。
创建列表的真实副本,使用 copy() 方法或以原始列表作为参数的 list() 构造函数,如下所示:
<code class="python">vec = v.copy() vec = list(v)</code>
以上是为什么在 Python 中修改列表变量也会影响分配给它的另一个变量?的详细内容。更多信息请关注PHP中文网其他相关文章!