You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中不使用append()修改列表的疑问及实现方法

问题解答

为什么stack = stack + [2]不会修改原列表

Python里,当你在函数内部对参数变量做赋值操作(比如stack = ...),这个变量会被视为函数的局部变量。stack + [2]会创建一个新的列表对象,然后把这个新对象赋值给局部的stack变量,完全和外部传入的原列表没关系。所以外部的列表根本没被改动,最终结果还是[1]。

不使用append()添加元素的正确写法

如果要修改原列表对象,而不是创建新对象,有两种常用方式:

  • 使用+=操作符:stack += [2],这是列表的原地修改操作,会直接把元素添加到原列表里。
  • 使用切片赋值:stack[:] = stack + [2],通过切片覆盖原列表的所有内容,相当于把原列表和新元素合并后重新写入原对象。

举个完整的例子:

def push(stack):
    # 正确写法1
    stack += [2]
    # 或者正确写法2
    # stack[:] = stack + [2]

stack = [1]
push(stack)
print(stack)  # 输出 [1,2]

内容的提问来源于stack exchange,提问作者developlee20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:44:52