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

Python将列表追加到列表后,原列表修改时已追加内容同步变更问题

问题原因

这是Python可变对象的引用传递特性导致的:

  • 列表属于可变对象,你传递arr参数、执行lista_input.append(arr)时,实际存入的是列表的内存引用,而非列表内容的独立副本。
  • 你的代码全程只创建了一个列表实例(就是主函数中初始化的inputs),所有存入lista_input的元素都指向同一个内存地址。递归过程中修改arr[i]的操作,本质是修改这唯一的列表实例的内容,所有指向它的引用都会同步更新,最终所有元素都显示为最后一次修改后的结果[1,1]。
修复方法

只需要在把arr存入lista_input时,创建一份内容副本即可,将原代码中的:

lista_input.append(arr)

修改为任意一种拷贝写法即可:

# 写法1:用列表内置copy方法
lista_input.append(arr.copy())
# 写法2:用切片实现拷贝
lista_input.append(arr[:])
# 写法3:用list构造函数生成新列表
lista_input.append(list(arr))

修改后运行程序,输出就会是预期的[[0, 0], [0, 1], [1, 0], [1, 1]]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:27:04