(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
.
这是从我正在处理的数独解算器中提取的一些代码。我改变了一些以缩小它,但它的基本问题仍然存在。如果我要 运行 这个,它会通过 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
.