преобразовать строку в двумерный список в Python - PullRequest
1 голос
/ 25 апреля 2020

У меня есть следующая строка:

890000071100000006000207000002060400000972000006080300000501000200000004650000089

, и я хотел бы преобразовать ее в двумерный список, чтобы он выглядел так:

[[8, 9, 0, 0, 0, 0, 0, 7, 1], [1, 0, 0, 0, 0, 0, 0, 0, 6], [0, 0, 0, 2, 0, 7, 0, 0, 0], [0, 0, 2, 0, 6, 0, 4, 0, 0], [0, 0, 0, 9, 7, 2, 0, 0, 0], [0, 0, 6, 0, 8, 0, 3, 0, 0], [0, 0, 0, 5, 0, 1, 0, 0, 0], [2, 0, 0, 0, 0, 0, 0, 0, 4], [6, 5, 0, 0, 0, 0, 0, 8, 9]]

Кто-нибудь знает как это сделать в Python?

Вот что я сделал:

board_str = "890000071100000006000207000002060400000972000006080300000501000200000004650000089"

def convert(boardpm: str) -> list:
    list = []

    for i in range(0, len(boardpm)):
        list.append(boardpm[i])

    boardpm = [list[i:i+9] for i in range(0, len(list), 9)]

    return boardpm

Спасибо!

1 Ответ

0 голосов
/ 25 апреля 2020
[list(board_str[i:i+9]) for i in range(0, len(board_str), 9)]
[['8', '9', '0', '0', '0', '0', '0', '7', '1'],
 ['1', '0', '0', '0', '0', '0', '0', '0', '6'],
 ['0', '0', '0', '2', '0', '7', '0', '0', '0'],
 ['0', '0', '2', '0', '6', '0', '4', '0', '0'],
 ['0', '0', '0', '9', '7', '2', '0', '0', '0'],
 ['0', '0', '6', '0', '8', '0', '3', '0', '0'],
 ['0', '0', '0', '5', '0', '1', '0', '0', '0'],
 ['2', '0', '0', '0', '0', '0', '0', '0', '4'],
 ['6', '5', '0', '0', '0', '0', '0', '8', '9']]

или - если вы хотите целые числа вместо строк - используйте

[list(map(int, board_str[i:i+9])) for i in range(0, len(board_str), 9)]
 [[8, 9, 0, 0, 0, 0, 0, 7, 1],
  [1, 0, 0, 0, 0, 0, 0, 0, 6],
  [0, 0, 0, 2, 0, 7, 0, 0, 0],
  [0, 0, 2, 0, 6, 0, 4, 0, 0],
  [0, 0, 0, 9, 7, 2, 0, 0, 0],
  [0, 0, 6, 0, 8, 0, 3, 0, 0],
  [0, 0, 0, 5, 0, 1, 0, 0, 0],
  [2, 0, 0, 0, 0, 0, 0, 0, 4],
  [6, 5, 0, 0, 0, 0, 0, 8, 9]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...