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

如何替换二维数组中的单个元素?双重索引失效问题排查

问题分析与解决

核心问题

你遇到的替换整列而非单个元素的问题,根源在于二维数组的创建方式错误。

错误原因

你用arr = [[-1] * len(field)]*len(field)创建二维数组时,* len(field)只是把同一个子列表重复了多次,所有行实际上指向同一个列表对象。所以当你修改arr[y][x]时,所有行的第x个元素都会跟着改变。

另外代码里还有一个语法错误:arr[y][x]) = int(total_mines)多了一个右括号,会导致运行报错。

修正方案

  1. 用列表推导式创建独立的二维数组:确保每一行都是新的列表,互相独立。
  2. 修复语法错误:去掉多余的右括号。

修正后的代码

def solution(field, x, y):
    # 用列表推导式创建独立的二维数组
    arr = [[-1 for _ in range(len(field))] for _ in range(len(field))]
    print(arr)
    total_mines = 0
    for array in field:
        temp_mines = array[x-1] + array[x] + array[x+1]
        total_mines += temp_mines
    # 去掉多余的右括号
    arr[y][x] = int(total_mines)
    print(arr)

# 示例调用
field =[[0, 1, 1],[1, 0, 1],[0, 0, 1]]
x_axis = 1
y_axis = 1
solution(field, x_axis, y_axis)

运行结果

[[-1, -1, -1], [-1, -1, -1], [-1, -1, -1]]
[[-1, -1, -1], [-1, 5, -1], [-1, -1, -1]]

现在只有arr[1][1]被修改为5,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:30:50