как удалить пустую строку из листа пайтон

к примеру ест код list = [12,3,1,'',99,7,120] как удалить пустой элемент ?


Ответы (2 шт):

Автор решения: A_Vaclav

list.remove(x) - Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует. Справка.

def remove_in_list(arr, template):
    try:
        res = arr[::]# не будем мутировать входные данные
        res.remove(template)
    except ValueError:
        #pass
        print('Элемента нет в списке')
        res = arr
    return res

# Проверим как работает
arr = [12,3,1,'',99,7,120]
arr = remove_in_list(arr, '')
print(arr)

arr = remove_in_list(arr, '')
print(arr)

Выводит:

[12, 3, 1, 99, 7, 120]
Элемента нет в списке
[12, 3, 1, 99, 7, 120]

И вариант без try...except, для "начинающих":

def remove_in_list_not_try(arr, template):
    if template in arr:
        res = arr[::]# не будем мутировать входные данные
        res.remove(template)
    else:
        #pass
        print('Элемента нет в списке')
        res = arr
    return res

# Проверим как работает
arr = [12,3,1,'',99,7,120]
arr = remove_in_list_not_try(arr, '')
print(arr)

arr = remove_in_list_not_try(arr, '')
print(arr)
→ Ссылка
Автор решения: CrazyElf

Как вариант, если нужно удалить сразу и пустые строки, и нули, и пустые коллекции, и значения False, в общем всё "пустое" одним махом:

lst = [12,3,1,'',99,7,120]
print(list(filter(None, lst)))

# [12, 3, 1, 99, 7, 120]

Ну или ладно, пусть только пустые строки удалять нужно:

lst = [12,3,1,'',99,7,120]
print(list(filter(''.__ne__, lst)))

# [12, 3, 1, 99, 7, 120]
→ Ссылка