Вы можете добиться этого путем объединения некоторых списковых следующим образом:
number_columns = 6
sample_string = 'abcdefghijklmnopqrstuvwxyzabcdefgh'
l = [list(sample_string[i:i+number_columns]) for i in range(0, len(sample_string), number_columns)]
matrix = [s if len(s) == number_columns else s+[None]*(number_columns-len(s)) for s in l]
дает для matrix
:
[['a', 'b', 'c', 'd', 'e', 'f'],
['g', 'h', 'i', 'j', 'k', 'l'],
['m', 'n', 'o', 'p', 'q', 'r'],
['s', 't', 'u', 'v', 'w', 'x'],
['y', 'z', 'a', 'b', 'c', 'd'],
['e', 'f', 'g', 'h', None, None]]
Прежде всего нарежьте sample_string
к подстрокам нужной длины (количество столбцов), которые преобразуются в списки после нарезки.
В примере кода я предоставил sample_string
не нацело на данном number_colums
смысле, что последний список подстроки efgh
не имеет требуемую длину number_columns
. Чтобы получить это исправление, нам нужно проверить, соответствует ли длина каждого списка. Если нет, мы добавляем необходимое количество элементов None
.
Для того, чтобы избавиться от любых пространств, которые мы должны расширить код,
sample_string = sample_string.replace(' ', '')
, которые заменили бы пробелы с пустой строкой. Так
number_columns = 6
sample_string = 'this is a sample string'
sample_string = sample_string.replace(' ', '')
l = [list(sample_string[i:i+number_columns]) for i in range(0, len(sample_string), number_columns)]
matrix = [s if len(s) == number_columns else s+[None]*(number_columns-len(s)) for s in l]
приведет к
[['t', 'h', 'i', 's', 'i', 's'],
['a', 's', 'a', 'm', 'p', 'l'],
['e', 's', 't', 'r', 'i', 'n'],
['g', None, None, None, None, None]]
Не могли бы вы предоставить образец для входных и выходных фрагмент кода и сделать код полностью работоспособным? Например, 'tabla' не определен правильно в коде, который вы указали. – albert
Извините, tabla - это матрица. Я уже исправляю его –
А как насчет выборочного ввода/вывода? – albert