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

Python函数内列表修改是否保留到外部?示例存疑

这段Python代码的输出疑问解答

先看问题里的代码:

def a(b):
    b = b + [5]
 
c = [1, 2, 3, 4]
a(c)
print(len(c))

核心问题解析

  • 原答案a) 4是正确的,但给出的解释完全错误。
  • 函数调用a(c)时,参数b最初确实是c的引用,指向同一个列表[1,2,3,4]。
  • 但b = b + [5]不是原地修改原列表:+运算会合并两个列表,生成一个新的列表对象[1,2,3,4,5],然后把局部变量b重新指向这个新对象。
  • 原来的c始终指向最初的列表[1,2,3,4],没有被改动,所以len(c)输出4。
  • 如果要让修改影响到外部的c,得用原地修改方法,比如b.append(5)或者b.extend([5]),这时候才会直接修改c指向的原列表,输出就会是5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:24:55