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

Python二维列表append的值与预期不符,copy()未生效是什么原因?

问题根源

你对copy()方法的认知有误,Python 中列表自带的copy()方法属于浅拷贝,仅会复制外层列表的结构,不会递归复制嵌套的子列表。
你定义的mat是二维列表,外层列表存储的是两个子列表[0,0,0,0]和[6,7,8,9]的内存引用,浅拷贝后新生成的外层列表里,存的还是和原列表完全相同的子列表引用。所以你后续修改原mat[0][x]的值时,所有浅拷贝得到的列表对应位置也会同步变化。

解决方法

方法1:使用深拷贝

导入标准库copy的deepcopy方法,它会递归复制所有层级的嵌套对象,完全隔离新旧列表:

import copy

mat = [ [0,0,0,0], [6,7,8,9] ]
listOfMats = []
for x in range(4):
    mat[0][x] = 1
    listOfMats.append(copy.deepcopy(mat))
    mat[0][x] = 0

方法2:手动构造新列表(更轻量)

你这个场景下无需修改原列表,直接每次生成新的目标矩阵即可,性能更高也不会有拷贝问题:

listOfMats = []
for x in range(4):
    new_mat = [ [1 if i == x else 0 for i in range(4)], [6,7,8,9] ]
    listOfMats.append(new_mat)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:48:02