在 Python 中使用列表时,可能会出现意外行为。让我们了解为什么更改一个列表会意外影响另一个列表。
问题:
考虑以下 Python 代码:
<code class="python">v = [0, 0, 0, 0, 0, 0, 0, 0, 0] vec = v # Assignment by reference vec[5] = 5</code>
此代码执行后, v 和 vec 都在索引 5 处显示修改后的值:
>>> print(vec) [0, 0, 0, 0, 0, 5, 0, 0, 0] >>> print(v) [0, 0, 0, 0, 0, 5, 0, 0, 0]
即使 v 没有明确修改,为什么它也会改变?
理解问题:
在Python中,当你将一个列表分配给一个新变量时,你并不是在创建一个副本;而是在创建一个副本。相反,您正在创建一个参考。这意味着 v 和 vec 都指向内存中相同的底层列表对象。
解决方案:
要拥有两个具有相同值的单独列表,您需要创建使用 list() 构造函数的副本:
<code class="python">vec = list(v) # Creates a copy</code>
现在,当您对 vec 进行更改时,v 将不受影响。
以上是为什么在 Python 中修改一个列表会影响另一个列表?的详细内容。更多信息请关注PHP中文网其他相关文章!