在 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中文网其他相关文章!