我正在用Python制作一个数独解算器,我的代码可以工作,但我需要指定一个列表,该列表由列表中的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]]我想做一个带有分裂函数的while循环,然后将每个值附加到一个列表中,但这只会创建一个巨大的列表。
有人能帮我吗?
我可以对此进行扩展,如果需要的话,也可以给你代码,谢谢。
发布于 2013-04-16 20:28:04
输入是用空格分隔的
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)]注意:Python2.7上的raw_input
发布于 2013-04-16 20:28:06
首先,找出他们第一个输入的len()是什么,然后创建一个该长度的列表。然后,每次循环时,创建一个列表并将其添加到容器列表中。一旦有了正确数量的列表来构建行,就不要再要求输入了。有几种方法可以通过while或for循环来实现这一点。
发布于 2013-04-16 20:36:41
您可以在输入上使用list comprehension,然后将其附加到主列表中:
main = []
...
#get input
...
main.append([int(i) for i in input])https://stackoverflow.com/questions/16036933
复制相似问题