Удалить пустые строки из списка строк в Python
В этом посте мы обсудим, как удалить пустые строки из списка строк в Python.
1. Использование filter() функция
Рекомендуемое решение — использовать встроенную функцию filter(function, iterable) , который строит iterator из элементов iterable для которого указано функция возвращает истину. Если функция None , предполагается тождественная функция, т. е. все элементы iterable, которые являются ложными, удаляются. Вот рабочий пример с использованием фильтров:
if __name__ == ‘__main__’ :
l = [ ‘A’ , ‘B’ , » , ‘C’ , » , ‘D’ ]
l = list ( filter ( None , l ) )
print ( l ) # [‘A’, ‘B’, ‘C’, ‘D’]
Вы также можете пройти len функция для фильтрации пустых строк из списка, как показано ниже:
if __name__ == ‘__main__’ :
l = [ ‘A’ , ‘B’ , » , ‘C’ , » , ‘D’ ]
l = list ( filter ( len , l ) )
print ( l ) # [‘A’, ‘B’, ‘C’, ‘D’]
2. Использование понимания списка
Вы также можете использовать понимание списка для удаления пустых строк из списка строк. Понимание списка состоит из выражения, за которым следует цикл for, за которым следует необязательный цикл for или оператор if, заключенные в квадратные скобки. [] . Обратите внимание, что это решение медленнее, чем подход с фильтром.
if __name__ == ‘__main__’ :
l = [ ‘A’ , ‘B’ , » , ‘C’ , » , ‘D’ ]
l = [ s for s in l if s ]
print ( l ) # [‘A’, ‘B’, ‘C’, ‘D’]
3. Использование join() с split() функция
Выражение ‘ ‘.join(iterable).split() может использоваться для фильтрации пустых значений из итерации. ‘ ‘.join(list) эффективно объединить список строк, разделенных пробелом. затем split() Функция вызывается для результирующей строки, которая возвращает список строк, в которых последовательные пробелы считаются одним разделителем.
if __name__ == ‘__main__’ :
l = [ ‘A’ , ‘B’ , » , ‘C’ , » , ‘D’ ]
l = ‘ ‘ . join ( l ) . split ( )
print ( l ) # [‘A’, ‘B’, ‘C’, ‘D’]
4. Использование list.remove() функция
The list.remove(«») удаляет только первое вхождение пустой строки из списка. Чтобы удалить все вхождения пустой строки из списка, вы можете воспользоваться тем фактом, что она вызывает ValueError когда он не может найти указанный элемент в списке. Идея состоит в том, чтобы многократно вызывать remove() функционировать до тех пор, пока не возникнет ValueError исключение. Это показано ниже:
Как удалить элемент из списка списков (python)?
Не понятно, что требуется сделать.
Либо удалить элемент Class1, либо элемент по параметру text. Это сильно разные задачи, решаются по-разному.
При этом надо понимать, что где-то должны быть определены эти классы с соответствующими атрибутами.
И вообще выглядит всё это так, будто человек, который писал этот код, не понимает что такое классы, зачем они и как.
estry @estry Автор вопроса
Алан Гибизов, элемент по параметру text надо удалить

Алан Гибизов @phaggi Куратор тега Python
estry, ну вы хоть попробовали?
Покажите попытку, хотя бы неудачную.
(Признаться, я вообще не понимаю, откуда может родиться такая задача. Что генерирует такой код?)
Решения вопроса 1

backend developer (python, php)
Если точно известно, что это именно список из списков, в котором есть объекты только Class1, то делается это просто с помощью фильтра в 1 строку:
filtered_lst = [list(filter(lambda cls1: cls1.text != Действие найдено, lst_inner)) for lst_inner in ar_ar]
Удаление пустых элементов списка python
Для начала стоит формализовать, что такое «пустой» элемент.
«Пустыми» можно считать многие элементы, например,
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
Отфильтровать пустые строки можно или с помощью filter() или генератора списков.
l = ['foo', '', 'bar', '', '', 'biz'] list(filter(None, l)) # ['foo', 'bar', 'biz'] [x for x in l if x] # ['foo', 'bar', 'biz']
