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
相关产品推荐
相关产品推荐

