Уравнять длину вложенных списков
Имеется список со вложенными списками разной длинны:
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']]
Спасибо.
Ответы (2 шт):
Автор решения: nchistov
→ Ссылка
Я написал код на Python, но здесь приведу общюю идею:
for элемент in список:
if длина элемента < 5:
элемент += '0' * (5 - длина элемента) # в Python: element += ['0'] * (5 - len(element))
Автор решения: wchistow
→ Ссылка
Есть функция 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', '_']]