Как удалить '' в списке в Python? - PullRequest
0 голосов
/ 28 мая 2019

Я все еще нуб, когда дело доходит до питона. У меня есть этот список, который содержит строки. Моя проблема заключается в удалении '' (пустая строка) из списка.

Я пытался использовать .remove() в python, но он все еще не работает.

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

a = ['', 'word', 'three', '', 'five']

Я просто хочу, чтобы результат был:

a = ['word', 'three', 'five']

Ответы [ 4 ]

2 голосов
/ 28 мая 2019

Вы можете применить понимание списка , чтобы переписать исходный список без строк нулевой длины.

Код:

a = ['', 'word', 'three', '', 'five']
a = [item for item in a if item]

Выход:

['word', 'three', 'five']
0 голосов
/ 28 мая 2019

Вы можете сравнить length строки и добавить в список, длина которого превышает 1

Вы можете сделать это:

a = ['', 'word', 'three', '', 'five']
b = []

for x in a:
    if len(x) > 1:
        b.append(a)

Вы также можете сделать это с помощью списка пониманий

a = ['', 'word', 'three', '', 'five']
b = [i for i in a if len(i) > 1]
0 голосов
/ 28 мая 2019

Вы можете просто сделать, как показано ниже. filter функция делает это по умолчанию.

a = ['', 'word', 'three', '', 'five']

print(list(filter(None, a)))

Выход:

['word', 'three', 'five']
0 голосов
/ 28 мая 2019

Кратчайший путь с использованием генераторов списков :

[elem for elem in a if elem] (Это отфильтрует None с, 0 и False с)


Хороший короткий путь:

[elem for elem in a if elem != '']


Использование фильтра встроенная функция с лямбдами :

list(filter(lambda e: e != '', a))


Общий способ - составить список индексов для удаления, а затем удалить их из исходного списка:

indices_to_remove = []
for i, elem in enumerate(a):
    if elem == '':  # Allows to use a complicated logic
        indices_to_remove.append(i)
for i in sorted(indices_to_remove, reverse=True):
    del a[i]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...