Уведомления

Группа в Telegram: @pythonsu

#1 Июль 22, 2019 21:19:16

polsovatel
Зарегистрирован: 2016-01-08
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Доброго времени суток!
Подскажите пожалуйста, как можно удалить вложенные пустые списки? Понятно, что с помощью рекурсии, но у меня не выходит.
Пример:

 [[[[]]]], [], 5] => [5]

Мой код:
 def del_null(x):
	for p in x:
		if isinstance(p, list) and len(p) != 0:
			del_null(p)
		elif isinstance(p, list):
			del p

Отредактировано polsovatel (Июль 22, 2019 21:19:46)

Офлайн

#2 Июль 23, 2019 00:58:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

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

  
>>> def f(lst):
...     out = []
...     for i in lst:
...         if isinstance(i, list):
...             if i:
...                o = f(i)
...                if o:
...                    out.append(o)
...         else:
...             out.append(i)
...     return out
... 
>>> f([[[[[]]]], [], 5])
[5]
>>> f([])
[]
>>> f([[]])
[]
>>> f([[], 1])
[1]
>>> f([[], [[1], []]])
[[[1]]]
>>>



Офлайн

#3 Июль 23, 2019 13:59:13

polsovatel
Зарегистрирован: 2016-01-08
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Большое спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version