首页 >后端开发 >Python教程 >为什么在 Python 中将列表分配给新变量不会创建单独的副本?

为什么在 Python 中将列表分配给新变量不会创建单独的副本?

Linda Hamilton
Linda Hamilton原创
2024-11-03 07:43:30555浏览

Why does assigning a list to a new variable in Python not create a separate copy?

意外的列表突变

创建类似 v = [0,0,0,0,0,0,0,0 的列表时,0],您可能会假设将新列表分配给变量会创建一个单独的引用。但是,如下代码可能会出现意外行为:

<code class="python">vec = v
vec[5] = 5</code>

vec 和 v 现在都在索引 5 处包含值 5。为什么会发生这种情况?

引用赋值

在 Python 中,列表是可变对象。分配 vec = v 不会创建列表的新副本。相反,它分配对 v 的引用。 vec 和 v 都指向内存中相同的基础列表对象。

对 vec 或 v 进行的任何修改都会影响原始列表,因为它们是相同的列表。这就是为什么当 vec[5] 改变时,v 也会改变。

解决方案

要创建列表的单独副本,请使用 list() 函数:

<code class="python">vec = list(v)</code>

这将创建一个新的列表对象,其中包含 v 中元素的副本。对 vec 所做的任何更改都不会影响 v,反之亦然。

以上是为什么在 Python 中将列表分配给新变量不会创建单独的副本?的详细内容。更多信息请关注PHP中文网其他相关文章!

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