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

如何正确初始化Python二维列表 避免子列表引用重复导致的操作异常

问题原因

你写的l = [[]] * 10并不会生成10个独立的空列表,只是把同一个空列表的内存引用复制了10次,所有子列表实际指向同一个存储地址,修改任意一个子列表都会同步修改其他所有列表。你执行10次追加[0]的操作,相当于给同一个列表连续加了10次0,最终所有子列表都变成了长度为10的列表,就得到了你所说的10×10的错误结果。

解决方法
  • 方法1:用列表推导式生成独立的子列表,再逐个追加元素
# 循环生成10个完全独立的空列表
l = [[] for _ in range(10)]
for i in range(10):
  l[i] += [0]

运行后输出为[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]],符合10×1零矩阵的预期。

  • 方法2:直接一步生成目标矩阵,简化写法
    如果不需要额外的循环逻辑,直接通过列表推导式一步生成结果即可:
l = [[0] for _ in range(10)]
避坑提醒

不要使用[[0]] * 10这类写法,和你原来的代码逻辑一样,外层的10个元素仍然是同一个子列表的引用,后续修改时还是会出现联动问题。只有用列表推导式在外层循环中逐个生成子列表,才能保证每个子列表都是独立的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:36:03