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

Python开发生命游戏时二维数组赋值异常如何解决

问题原因

你的代码存在的核心问题是重复引用了同一个列表对象:

  • 你仅在代码开头初始化了一次gridY列表,后续往grid中追加时,并没有生成新的行列表,只是多次添加了同一个gridY的内存引用
  • 这就导致grid中所有行本质上是同一个列表,修改任意一行的元素,所有行的对应位置都会同步更新,这就是你看到修改单个值所有对角线位置同步变化的原因

修复方案

每次生成行时都创建全新的独立列表即可,两种常用实现方式:

写法1:循环新建行

def MakeGrid(height):
    grid = []
    for i in range(height):
        # 每次循环都生成新的行列表,避免引用复用
        gridY = [False] * height
        grid.append(gridY)
    return grid

写法2:列表推导式(更简洁)

def MakeGrid(height):
    return [[False for _ in range(height)] for _ in range(height)]

注意不要使用[[False]*height]*height这种写法,和你原来的代码逻辑等价,同样存在引用复用的问题。

修复后你再执行修改grid[0][0] = True的测试,就能得到预期的[[True, False], [False, False]]结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:54:02