def sqrs(seq):
boxes = [[] for x in range(0,9)]
j = 0
for y in range(0, 7, 3):
for x in range(0, 7, 3):
for i in range(0, 3):
boxes[j].extend(seq[y + i][x:x + 3])
j += 1
return boxes
因此,此函数运行一个列表列表,该列表是9x9数独解决方案,并将每个3x3框转移到另一个列表列表。它完成了这项工作,但看起来很丑陋。有没有人知道有一种更明智的方式来完成这项工作?
不,我不能使用numpy。 :(
答案 0 :(得分:1)
您的示例未运行,因为未定义li
,但如果我了解您要执行的操作,并且您不关心每个框中数字列表的顺序,那么这是有效的 - 如果你认为它更光滑,这取决于你。
def sqrs(seq):
indices = [(x % 3, x / 3) for x in range(0, 9)] # Set up a list of coordinates
boxes = [[seq[x*3+xx][y*3+yy] for xx, yy in indices] for x, y in indices] # Use the list of coordinates both to reference the boxes and to reference the cells within the box, to reorganize the list.
return boxes