Удалить каждый второй элемент из списка
Задача состоит в следующем:
Дан список строк. Нужно убрать из списка каждый второй элемент. Например:
['1', '2', '3', '4'] => ['2', '4']
['qwerty', 'asdfg', 'zxcvb'] => ['asdfg']
Я захотел написать однострочное решение данной задачи. Моя попытка:
return [i for i in spisok if spisok.index(i) % 2 == 0]
Код, естественно, не работает на списках, в которых присутствуют повторяющиеся значения, так как метод list.index()
возвращает индекс первого вхождения в список. Конечно, легко решить задачу при помощи многострочного кода, вроде
i = 1
while index < len(spisok):
del spisok[i]
i += 1
return spisok
Но все-таки, существует ли однострочное решение данной задачи? Хотелось бы узнать
- Самое лаконичное решение
- Самое понятное решение
- Самое запутанное решение (☻)
Источник: Stack Overflow на русском