我有一个 9x9 数独板。我必须创建 9 个子方列表。我将这些列表中的每一个作为一行存储在另一个名为 sub_square 的列表中。
代码:
sub_square = []
sub_list = []
for x in range(0,3):
for y in range(0,3):
sub_list.append(sudoku[x][y])
sub_square.append(sub_list)
sub_list = []
for x in range (0,3):
for y in range(3,6):
sub_list.append(sudoku[x][y])
sub_square.append(sub_list)
sub_list = []
for x in range (0,3):
for y in range(6,9):
sub_list.append(sudoku[x][y])
sub_square.append(sub_list)
sub_list = []
我对其他 6 个子方 block 执行相同的操作。有没有其他更简单的方法。
数独:
[0, 9, 4, 3, 0, 0, 0, 0, 0],
[0, 0, 7, 5, 0, 0, 0, 0, 0],
[0, 0, 1, 4, 0, 0, 0, 2, 0],
[4, 6, 0, 8, 0, 0, 0, 0, 3],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[2, 0, 0, 0, 0, 3, 0, 6, 9],
[0, 5, 0, 0, 0, 6, 2, 0, 0],
[0, 0, 0, 0, 0, 5, 1, 0, 0],
[0, 0, 0, 0, 0, 1, 6, 4, 0]
所以第一个子方 block 列表是:
[0, 9, 4, 0, 0, 7, 0, 0, 1]
请您参考如下方法:
是的,有一个更简单的方法:
subsquares = [[sudokuSquare[j][i] for j in range(x, x + w) for i in range(y, y + h)] for x in range(0, 9, 3) for y in range(0, 9, 3)]
h 和 w 分别是每个子正方形的高度和宽度。 (对于您的目的,h 和 w 都等于 3。
