列表和引用:了解 Python 中的变量赋值
在 Python 中,引用列表的变量可能会表现出意外的行为。考虑下面的代码:
<code class="python">v = [0] * 9 vec = v # Assign v's address to vec vec[5] = 5 # Modify vec at index 5 print(v) # Also prints [0, 0, 0, 0, 0, 5, 0, 0, 0]</code>
令人惊讶的是,打印“v”表明它也被修改了。这种行为一开始可能会令人困惑。
为什么 'v' 会改变?
'v' 改变的原因是 vec 和 v 都是引用。当您分配 vec = v 时,您并没有创建新列表。相反,您只需将 v 的地址(即内存指针)分配给 vec。
因此,vec 和 v 都指向内存中的同一个列表。对任一变量所做的任何更改都会影响基础列表,这就是为什么当修改 'vec' 时 'v' 也会更改。
创建单独的列表
创建两个单独的列表,您需要执行浅复制:
<code class="python">vec = list(v)</code>
这将创建一个与“v”具有相同值的新列表,但将其存储在不同的内存位置。现在,修改 'vec' 不会影响 'v'。
以上是为什么在Python中修改\'vec\'也会改变\'v\'?的详细内容。更多信息请关注PHP中文网其他相关文章!