Удалить элемент из списка Python, пока не будет найден указанный c символ - PullRequest
0 голосов
/ 10 февраля 2020

Здравствуйте, у меня есть этот Python Список

carachter = "@"

list = ['Montpellier', 'Saint-Etienne', '@', 'Strasbourg', 'Reims', '@', 'PSG', 'Olympique Lyonnais', '21:05', 'SPAL', 'Sassuolo', '@', 'Genoa', 'Cagliari', '20:30']

Как я могу получить этот вывод?

list = ['PSG', 'Olympique Lyonnais', '21:05', 'Genoa', 'Cagliari', '20:30']

На практике, учитывая символ @, я бы хотел удалить из списка @ и два предыдущих элемента. Другой пример:

  • вход: [1, 2, '@', 3, 4]
  • выход: [3, 4]

спасибо

1 Ответ

4 голосов
/ 10 февраля 2020

Вы можете получить индексы для удаления и фильтрации соответственно.

>>> indexes = set(itertools.chain.from_iterable((i,i-1,i-2) for i in range(len(l)) if l[i]=='@'))
>>> res = [el for i,el in enumerate(l) if i not in indexes]
>>> res
['PSG', 'Olympique Lyonnais', '21:05', 'Genoa', 'Cagliari', '20:30']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...