为什么在Python中修改\'vec\'也会改变\'v\'?

DDD
发布: 2024-11-03 04:08:31
原创
211 人浏览过

Why Does Modifying 'vec' Also Change 'v' in Python?

列表和引用:了解 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板