You need to enable JavaScript to run this app. Python求解Leetcode 3Sum时列表出现意外修改问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python求解Leetcode 3Sum时列表出现意外修改问题咨询

问题成因

该现象是Python可变对象的引用传递特性导致的,并非列表的异常行为,具体逻辑如下:

  • Python中的列表属于可变对象,对列表进行赋值操作时,默认传递的是指向内存中列表实体的引用,而非重新拷贝一份列表内容。
  • 第一个双层循环中存入sum字典的value都是独立的列表对象,例如key为1对应的列表是[-1, 2],sum[1]仅为指向该列表的引用。
  • 第二个循环执行temp = sum[-nums[i]]时,temp和sum中存储的列表指向同一块内存空间,对temp的修改会直接作用到原列表上。
  • 第一次匹配到key为1的场景时,对temp执行append(-1)后列表变为[-1, 2, -1],符合长度要求被加入result,此时result[0]同样指向该列表实体。
  • 后续循环再次匹配到key为1时,又对同一个列表执行append(-1),列表变为[-1, 2, -1, -1],因长度超过3不会被再次加入result,但原列表已经被修改。由于result[0]和该列表是同一引用,最终打印result时第一个元素就会显示为修改后的值。

如果要避免该问题,可以在将列表加入result时进行浅拷贝,改为result.append(temp.copy())即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 23:06:00