相关疑难解决方法(0)

如何在python中创建3x3数独块的列表

我需要为数独的9个3x3块中的每个块创建列表的帮助。所以我有一个列表列表代表原始的数独板(零表示空):

board=[[2,0,0,0,0,0,0,6,0],
       [0,0,0,0,7,5,0,3,0],
       [0,4,8,0,9,0,1,0,0],
       [0,0,0,3,0,0,0,0,0],
       [3,0,0,0,1,0,0,0,9],
       [0,0,0,0,0,8,0,0,0],
       [0,0,1,0,2,0,5,7,0],
       [0,8,0,7,3,0,0,0,0],
       [0,9,0,0,0,0,0,0,4]]
Run Code Online (Sandbox Code Playgroud)

我需要将它们变成包含3x3块的列表列表。因此,例如:

[[2,0,0,0,0,0,0,4,8],[etc]]
Run Code Online (Sandbox Code Playgroud)

我尝试创建一个名为“块”的列表,其中包含9个其他列表,每个列表中只有零。所以看起来像:

blocks=[[0,0,0,0,0,0,0,0,0],[etc]
Run Code Online (Sandbox Code Playgroud)

然后我使用了while循环来更改列表中的值:

BLOCK_COUNT=0
BOARD_COUNT=0
while BLOCK_COUNT<len(blocks):
    blocks[BLOCK_COUNT][0]=board[BOARD_COUNT][BOARD_COUNT]
    blocks[BLOCK_COUNT][1]=board[BOARD_COUNT][BOARD_COUNT+1]
    blocks[BLOCK_COUNT][2]=board[BOARD_COUNT][BOARD_COUNT+2]
    blocks[BLOCK_COUNT][3]=board[BOARD_COUNT+1][BOARD_COUNT]
    blocks[BLOCK_COUNT][4]=board[BOARD_COUNT+1][BOARD_COUNT+1]
    blocks[BLOCK_COUNT][5]=board[BOARD_COUNT+1][BOARD_COUNT+2]
    blocks[BLOCK_COUNT][6]=board[BOARD_COUNT+2][BOARD_COUNT]
    blocks[BLOCK_COUNT][7]=board[BOARD_COUNT+2][BOARD_COUNT+1]
    blocks[BLOCK_COUNT][8]=board[BOARD_COUNT+2][BOARD_COUNT+2]
    BLOCK_COUNT+=1
    BOARD_COUNT+=3
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一个索引错误。如果我用“ BLOCK_COUNT”分别为3和6创建了两个while循环,那么我会得到更好的答案,但是对于某些情况,它仍然无法提供正确的3x3块。因此,我对于如何执行此操作非常不知所措。谢谢。

python list sudoku

1
推荐指数
1
解决办法
5068
查看次数

标签 统计

list ×1

python ×1

sudoku ×1