我在Python中制作一个Sudoku解算器,我的代码可以工作,但是我需要在列表中指定一个由9个列表组成的列表供它进行分析。我目前正在努力如何做到这一点,以便当用户被提示输入时,他们输入9个数字没有空格,然后再做8次;每次提交一行时,该行都会转换为一个列表。目前我必须手动指定列表(参见下面的示例)。
b=[[2,5,9,7,1,6,4,8,3],
[8,6,7,3,4,5,9,1,2],
[4,1,3,9,2,8,6,7,5],
[3,9,8,5,7,4,1,2,6],
[5,4,6,2,8,1,7,3,9],
[1,7,2,6,3,9,5,4,8],
[9,8,4,1,6,3,2,5,7],
[6,2,1,8,5,7,3,9,4],
[7,3,5,4,9,2,8,6,1]]
我正在考虑使用split函数执行while循环,然后将每个值附加到列表中,但这只会创建一个巨大的列表。
有人能帮助我吗?
我可以扩展这个或者在必要时给你代码,谢谢。
答案 0 :(得分:2)
输入以空格分隔
b = [[int(x) for x in input()] for i in range(9)]
如果它被空格分开会不会看起来更好,我知道你的问题不是指明,但是你可以这样做:
b = [[int(x) for x in input().split()] for i in range(9)]
注意:Python 2.7上的raw_input
答案 1 :(得分:0)
首先,找出他们第一个输入的len()
是什么,然后创建该长度的列表。然后,每次循环时,创建一个列表并将其添加到容器列表中。一旦获得了正确数量的列表来构建行,就停止询问输入。使用while
或for
循环可以通过多种方式完成此操作。
答案 2 :(得分:0)
您可以在输入中使用list comprehension,然后将其附加到主列表中:
main = []
...
#get input
...
main.append([int(i) for i in input])