создание из составного списка, плоский список
Нужна функция которая получает в качестве аргумента составной список, а возвращает плоский список
Параметр lst - список, который может содержать другой список
>>> flatten_list([])
[]
>>> flatten_list([1,2,3])
[1, 2, 3]
>>> flatten_list([1,2,[3,4],5,6])
[1, 2, 3, 4, 5, 6]
>>> flatten_list([[[[1],2],3],4,[5,[6,[7]]]])
[1, 2, 3, 4, 5, 6, 7]
код попытки:
def flatten_list(lst):
flat_list = []
for sublist in lst:
for item in sublist:
flat_list.append(item)
return flat_list
Таким способом можно раскрыть 2D список, как из этого сделать для 3D, 4D списка и т.д Рекурсия ? Как ее можно реализовать в данной функции ?
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
есть наверное средства библиотеки numpy и т.д., но если в лоб встроенными средствами, то можно так:
def flatten_list(arr):
res = []
for obj in arr:
res += flatten_list(obj) if isinstance(obj, (list, tuple, set)) else [obj]
return res
print(flatten_list([[[[1],2],3],4,[5,[6,[7], {1,2,3,4}]]]))
данная функция работает со списками (list), кортежами (tuple) и множествами (set) и рекурсивно проходит до самых глубоких вложений
если требуется, чтобы она еще и словари переваривала, тогда ее слегка надо доработать, добавив такую возможность