Попробуйте,
>>> XYZ[:XYZ.index('c')]
['a', 'b']
# to keep 'c'
# >>> XYZ[:XYZ.index('c')+1]
# ['a', 'b', 'c']
Здесь мы не удаляем. мы нарезаем список по мере необходимости.
Чтобы удалить элементы из списка,
>>> del XYZ[XYZ.index('c')+1:]
>>> XYZ
['a', 'b', 'c']
Edit-1:
Для работы с особым случаемкак уже упоминалось @Austin в комментариях, для списка ['a', 'b', 'c', 'a', 'c', 'd', 'e']
Нам нужно сделать, как показано ниже,
>>> XYZ = ['a', 'b', 'c', 'a', 'c', 'd', 'e']
>>> XYZ.reverse()
>>> del XYZ[:XYZ.index('c')]
>>> XYZ.reverse()
>>> XYZ
['a', 'b', 'c', 'a', 'c']