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

LeetCode第2120题:Python二维列表赋值异常问题求助

问题分析与修正方案

错误原因

你用[[[0, 0]] * n] * n创建多维列表时,踩了Python列表乘法的典型坑——所有子列表都是同一个对象的引用。

具体逻辑:

  1. [[0,0]] * n生成的n个元素,全是指向同一个[0,0]列表的引用;
  2. 外层再执行*n,是把上面生成的整个列表重复n次,也就是说grid1的n行本质是同一个子列表的多份引用。

所以循环修改grid1[i][j]时,其实一直在修改那个共享的子列表。当循环走到最后一轮i=2时,所有行都会同步显示最后一次修改的结果。

修正代码

用列表推导式创建多维列表,每次迭代都会生成新的独立列表,彻底避免引用共享问题:

n = 3
# 方式1:先初始化再赋值
grid1 = [[[0, 0] for _ in range(n)] for _ in range(n)]
for i in range(n):
    for j in range(len(grid1[i])):
        grid1[i][j] = [i, j]
print(grid1)

# 方式2:直接用推导式生成目标结果,更简洁
grid1 = [[[i, j] for j in range(n)] for i in range(n)]
print(grid1)

运行后会得到你期望的输出:

[[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1], [1, 2]], [[2, 0], [2, 1], [2, 2]]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:45:32