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

Python中使用append()添加子列表时出现异常行为的问题咨询

问题根本原因

Python 中的列表属于可变对象,代码中S = X[i]是引用赋值,A.append(S)时添加的是S的内存引用,而非当前时刻列表的独立副本。
整个执行流程的问题如下:

  • 你每次向A中添加的S,都和原X[i]指向同一块内存地址
  • 后续修改S[j] = -1时,A中所有已经添加的、指向S的引用对应的内容会同步变化
  • 内层循环末尾你执行S[j] = T把元素改回了初始值,最终所有指向S的引用对应的列表都回到了初始状态,所以输出全是未修改的原列表。
解决方案

每次向A中添加内容时,新增当前列表的浅拷贝即可,把两处A.append(S)修改为A.append(S.copy())或者A.append(S[:])。

修改后的可运行代码如下:

A = []
X = [[1, 2, 3],[4, 5, 6]]
B = -1
for i in range(2):
    S = X[i]
    A.append(S.copy()) # 改为添加副本
    for j in range(3):
        T = S[j]
        S[j] = B
        A.append(S.copy()) # 改为添加副本
        S[j] = T

print('\nFinal shape of A after completion {}'.format(A))

运行后输出就和你预期的结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:45:01