Как убрать элементы из списка
Всем добрый вечер. Подскажите, какой есть самый быстрый способ из такого списка:
['a', '', 'b', '', 'c', '', 'd', '', 'e', '', 'f', '']
сделать такой, то есть без ' ':
['a', 'b', 'c', 'd', 'e', 'f']
Какая есть альтернатива этому способу? Т.е. без еще одного списка?
for i in listt:
if i != '':
new_list.append(i)
else:
continue
Ответы (3 шт):
Автор решения: Roman Konoval
→ Ссылка
Можно используя comprehensions:
items = ['ivan_p', '', 'petr_i', '', 'ivan_p1', '', 'ivan_i', '', 'ivan_i1', '', 'ivan_i2', '']
[x for x in items if x != '']
Автор решения: gil9red
→ Ссылка
items = ['ivan_p', '', 'petr_i', '', 'ivan_p1', '', 'ivan_i', '', 'ivan_i1', '', 'ivan_i2', '']
Через функциональный стиль:
items = list(filter(None, items))
Через удаление:
for i in reversed(range(len(items))):
# Или:
# if not items[i]:
if items[i] == '':
items.pop(i)
Автор решения: Maksim Pushkin
→ Ссылка
Можно короче, с использованием STEP:
items = ['ivan_p', '', 'petr_i', '', 'ivan_p1', '', 'ivan_i', '', 'ivan_i1', '', 'ivan_i2', '']
items=items[::2]