Уравнять длину вложенных списков

Рейтинг: 0Ответов: 2Опубликовано: 16.05.2023

Имеется список со вложенными списками разной длинны:

arr = [['1', '2', '3', '4', '5'], ['1', '2'], ['1', '2', '3', '4']]

Помогите пожалуйста справиться с задачей: Нужно все вложенные списки нужно "нарастить" до одной длины, чтобы len(вложенного списка) == 5. И на выходе получить такой результат:

arr = [['1', '2', '3', '4', '5', '0'], ['1', '2', '0', '0', '0', '0'], ['1', '2', '3', '4', '0', '0']]

Спасибо.

Ответы

▲ 0Принят

Я написал код на Python, но здесь приведу общюю идею:

for элемент in список:
    if длина элемента < 5:
        элемент += '0' * (5 - длина элемента) # в Python: element += ['0'] * (5 - len(element))
▲ 1

Есть функция itertools.zip_longest:

from itertools import zip_longest

arr = [['1', '2', '3', '4', '5'], ['1', '2'], ['1', '2', '3', '4']]

print(list(map(list, zip(*zip_longest(*arr, fillvalue='_')))))

Правда, этот код будет дополнять вложенные списки до длинны самого длинного, но в вашем случае работает:

[['1', '2', '3', '4', '5'], ['1', '2', '_', '_', '_'], ['1', '2', '3', '4', '_']]