(Python) TypeError: list indices must be integers, not list

(Python) TypeError: list indices must be integers, not list

这是从我正在处理的数独解算器中提取的一些代码。我改变了一些以缩小它,但它的基本问题仍然存在。如果我要 运行 这个,它会通过 solve 函数一次,但是当返回到 add1 函数的 board[x][y] += 1 部分时,它 returns TypeError: list indices must be integers, not list。我找不到任何答案。无法弄清楚为什么要传递列表而不是数字。请帮忙!

def init_board():
    board = [[],[],[],[],[],[],[],[],[]]
    for i in board:
        for x in range(0,9):
            i.append(0)
    return board

def add1(x, y):
    board[x][y] += 1

def solve(row, column):
    add1(row, column)
    for row in board:
        print(row)
    if True:
        if row == 8 and column == 8:
            return
        if column == 8:
            row += 1
            column = 0
        if column < 8:
            column += 1
        solve(row, column)

board = init_board()

solve(0,0)

在你放置 for row in board: 的地方,你正在遍历 board(列表的列表)并将 row 设置为每个内部列表。随后,当您调用 solve(row, column) 时,您将传入 row,它现在是一个列表。

如果这不是您想要的,请将 for row in board: 中的 row 更改为不同的变量名称,这样它就不会与您现有的 int 变量冲突 row.