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

Python循环修改列表后append结果不符合预期问题求助

问题根源

Python 中列表属于可变对象,你执行weights.append(w)时,实际追加的是列表w的内存引用,而非当前w的内容副本。
整个循环过程中你修改的都是同一块内存地址中的列表数据,最终weights里存储的10个元素全部指向同一个w对象,所以所有元素都会显示为最后一次修改后的[50,50,50,50,50,50,50],和预期不符。

修复方案

只需要在append时追加w的浅拷贝即可,常用的拷贝写法有两种:

  • 列表切片拷贝:weights.append(w[:])
  • 构造函数拷贝:weights.append(list(w))

修改后的完整代码:

w = [100,100,100,100,100,100,100]
epochs = 10
weights = []
for j in range(epochs):
    for i in range(len(w)):
        w[i] = w[i] - 5
    weights.append(w[:])

运行后即可得到你预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:21:00