Я создаю решатель sudoku с обратным отсчетом. Теперь мне нужно добавить 1 к каждой ячейке. Я использую «для» цикла:Для методов цикла и добавления со списками на Python 3
board = [[[0],[0],[0],[0]],
[[0],[0],[0],[0]],
[[0],[0],[0],[0]],
[[0],[0],[0],[0]]]`
a=0
b=0
x=board[a][b]`
for i in x:
x.append(i+1)
y = [sum(x)]
print(y)
break
board[a][b] = y
Что происходит, что, если у меня есть номер на борту, как «2», он делает операцию (1+1)+(1+1) +1
и возвращает 5 вместо 3. Я получаю 9 из 4 [(1+1)+(1+1)+(1+1)+(1+1)+1)]
и т. Д.
Я собираюсь решить его, переведя «x» из списка в целое число, а затем добавив 1, а затем переведя его в список.
Более эффективные и экономичные идеи?
(Я хочу, чтобы, если это возможно, структура списка «доски», но я открыт для любых предложений, конечно.)
EDIT:
Если у меня есть это:
board = [[[0],[3],[2],[0]],
[[0],[0],[0],[0]],
[[0],[0],[0],[0]],
[[0],[0],[0],[0]]]`
Я хочу, чтобы это закончилось так:
board = [[[1],[4],[3],[1]],
[[1],[1],[1],[1]],
[[1],[1],[1],[1]],
[[1],[1],[1],[1]]]`
Вместо этого, я получаю:
board = [[[1],[7],[5],[1]],
[[1],[1],[1],[1]],
[[1],[1],[1],[1]],
[[1],[1],[1],[1]]]`
РЕШЕНИЕ:
for i in x:
x.append(1) #Quite simple
Спасибо Джеймс!
просто для уточнения, вы хотите, чтобы все ячейки содержали 1 вместо 0 после цикла? – aseeon
В первом случае да, это то, что он делает. Но когда дело доходит до ячеек, у которых уже есть число, отличное от 0, я получаю неправильные значения. – user3870619