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

Python .append()方法行为异常,添加的列表元素全部重复如何解决

问题根因

这个现象是Python可变对象的引用传递特性导致的:列表属于可变对象,你直接append(x)时,实际是往列表中添加了x的内存引用,而非x当前的值拷贝。循环中每次修改x[0]都是修改同一个内存地址的内容,最终所有添加的引用都指向最后一次修改后的x值,因此全是[5,0]。

解决方案

只需在append时创建x的浅拷贝即可,不需要拆分x的元素,完全保留x的列表类型,有三种常用实现方式:

  • 方法1:使用列表切片拷贝
# 注意不要用list做变量名,会覆盖Python内置的list类型,此处改为my_list
my_list = [[0,0]]
x = [0,0]
for i in range(5):
    x[0] += 1
    my_list.append(x[:])
  • 方法2:使用list()构造函数拷贝
    只需修改append行代码即可:
my_list.append(list(x))
  • 方法3:使用copy模块的浅拷贝方法
import copy
my_list.append(copy.copy(x))

以上三种方式运行后,取my_list[1:]即可得到你预期的[[1,0],[2,0],[3,0],[4,0],[5,0]]结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:15:03