Как преобразовать строку в 2D список на основе заданного условия - PullRequest
0 голосов
/ 13 октября 2018

Я беру строку в качестве ввода.Я должен преобразовать в 2D список или матрицу, если @ представляет столбцы, а # представляет строки.

Пример: 1@-2@3#-3@2@4#-7@8@9 в [[1,-2,3],[-3,2,4],[-7,8,9]].

Это мой код.Я не мог получить точный результат.

a = input()
b = a.split('#')
c = [list(word) for word in b]
print(c)

Но это дает мне

[['1', '@', '-', '2', '@', '3'],
 ['-', '3', '@', '2', '@', '4'],
 ['-', '7', '@', '8', '@', '9']]

('-' принадлежит следующему элементу, а не выражению типа '-2')

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Ты почти у цели.c = [list(word) for word in b] преобразует каждый символ в слове в отдельный элемент.Чтобы предотвратить это, сначала сгруппируйте элементы так, как вам нравится, в список:

c = [word.split('@') for word in b]

Если вы хотите сделать записи целыми, вы должны сделать это явно:

c = [[int(item) for item in word.split('@')] for word in b]
0 голосов
/ 13 октября 2018

Вот подход, использующий split для выполнения разбиения на строки и столбцы для # и @ соответственно и от map ячеек до int:

s = "1@-2@3#-3@2@4#-7@8@9"

print([list(map(int, x.split("@"))) for x in s.split("#")])

Выход:

[[1, -2, 3], [-3, 2, 4], [-7, 8, 9]]

Попробуйте!

...