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

Python滑动窗口代码中未关联两列表莫名同步更新问题排查

问题根源

这是Python可变对象的引用机制导致的:

  • 列表属于可变对象,你执行result.append(window)时,并没有把window当前的内容复制一份存入result,只是把window的内存引用地址追加到了result里
  • 后续你修改window(比如执行append操作)时,所有指向这个内存地址的引用都会同步读到最新的内容,也就是你看到的result在你没有直接操作的情况下也被更新的现象
  • 循环结束后,result里存的所有元素都是同一个window对象的引用,所以最终输出的所有子数组完全相同,都是window最后一次更新后的内容

修复方案

往result里追加内容时,创建window当前状态的副本即可,可选写法:

# 写法1:用copy方法
result.append(window.copy())

# 写法2:用切片语法
result.append(window[:])

# 写法3:用list构造函数
result.append(list(window))

修改后可正常运行的代码

def find_subarrays(arr, target):
  result = []
  start = 0
  window = []
  product = 1
  print("target", target)
  for end in range(len(arr)):
    print("check Result", result)
    print("arr[end]", arr[end])
    window.append(arr[end])
    print("check Result 2", result, "hmm",window)

    print("firstR ", result)
    result.append(window.copy())
    print("secondR ", result)

  return result

find_subarrays([2, 5, 3, 10], 30)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:45:01