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

Python函数传入生成矩阵变量与直接传矩阵字面量结果不同问题

问题根因

你的猜测完全正确,问题出在createBoard函数的行引用重复问题:

  • 你在函数中仅初始化了一次X列表,后续向matrix中添加元素时,重复追加的都是同一个X的内存引用,最终生成的矩阵里所有行本质上是同一个列表。所以修改任意一行的元素时,所有行都会同步变更,这就是你修改(1,0)位置后,(1,1)位置也变成2的原因。
  • 直接传入字面量[[0,0],[0,0]]时,会创建两个完全独立的子列表作为矩阵行,修改其中一行不会影响另一行,结果符合预期。
修复方案

修改createBoard函数,每次生成矩阵行时都创建新的列表即可,示例代码如下:

def createBoard(DIMX, DIMY):
    matrix = []
    while len(matrix) != DIMY :
        # 每次循环都新建一行,避免引用复用
        X = []
        i = 0
        while i != DIMX :
            X.append(0)
            i+=1
        matrix.append(X)
    return matrix

也可以用更简洁的列表推导式实现:

def createBoard(DIMX, DIMY):
    return [[0 for _ in range(DIMX)] for _ in range(DIMY)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:02