首页 >后端开发 >Python教程 >为什么在 Python 中修改列表变量也会影响分配给它的另一个变量?

为什么在 Python 中修改列表变量也会影响分配给它的另一个变量?

Patricia Arquette
Patricia Arquette原创
2024-11-02 18:55:30805浏览

Why Does Modifying a List Variable in Python Also Affect Another Variable Assigned to It?

意外的列表突变:了解引用的影响

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn