Извините за глупый вопрос, но как удалить пустые элементы из списка в пайтоне?
Например, через генератор списков:
mylist = [x for x in mylist if x]
Вместо последнего x
можно написать x is not None
, если нули и пустые строки не должны считаться пустыми элементами.
Для начала стоит формализовать, что такое «пустой» элемент.
«Пустыми» можно считать многие элементы, например,
[], (), {}, set(), ''
в том числе
None, 0, 0.0, 0j, False
Если требуется выбросить из коллекции все такие элементы, то можно воспользоваться генератором списка
[value for value in values if value]
Или, если список не требуется, генераторным выражением:
(value for value in values if value)
Если правило определения «пустого» элемента более сложное, достаточно описать это правило после оператора if
в указанных выше выражениях, например,
[value for value in values if value != [None]]
оставит в списке элементы, которыне не равны списку, содержащему None
(важно заметить, что такой список будет пропущен в итоговый набор в первых случаях).
Следующий способ будет быстрее (для python 2.7):
filter(None, mylist)
а если вы используете python3, то необходимо использовать следующую конструкцию:
list(filter(None, mylist))
так как filter на python3 возвращает генератор