首页 > 后端开发 > Python教程 > 为什么 Python 中 `list_arg = list(a)` 不修改 `function1` 中的原始列表?

为什么 Python 中 `list_arg = list(a)` 不修改 `function1` 中的原始列表?

DDD
发布: 2024-10-28 21:19:02
原创
242 人浏览过

Why does `list_arg = list(a)` not modify the original list in `function1` in Python?

在 Python 中将列表修改为函数参数

考虑以下代码:

<code class="python">def function1(list_arg):
    a = function2()           # function2 returns an array of numbers
    list_arg = list(a)       # creates a new list and assigns it to list_arg

list1 = [0] * 5
function1(list1)
print(list1)      # Output: [0, 0, 0, 0, 0]</code>
登录后复制

此代码尝试修改该列表作为参数传递给 function1。然而,如果我们在调用 function1 后打印列表,我们会发现它保持不变,尽管在函数内进行了赋值。这是因为在函数内将新列表分配给 list_arg 会破坏对原始列表的引用。

要就地修改列表的元素,我们可以使用赋值切片:

<code class="python">list_arg[:] = list(a)</code>
登录后复制

此行将从 a 创建的新列表的元素分配给 list_arg 的切片,该切片从开头开始一直到结尾。这有效地将 list_arg 的元素替换为 a 的元素。

注意:

就地列表修改可能会令人困惑。通常首选创建一个具有所需修改的新列表并将其分配给参数变量,因为这可以保留原始列表和修改后的列表之间的清晰分离。

以上是为什么 Python 中 `list_arg = list(a)` 不修改 `function1` 中的原始列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

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