Цикл по списку с использованием enumerate
для получения индексов и значений, использование словаря и сохранение последнего индекса (последний индекс «выигрывает» при наличии дубликатов).В конце сортируйте индексы (поскольку словари не упорядочены, но вы можете использовать OrderedDict
):
import collections
lst = [1, 1, 1, 2, 2, 3, 3, 4, 5]
d = collections.OrderedDict()
for i,v in enumerate(lst):
d[v] = i
print(list(d.values()))
отпечатков:
[2, 4, 6, 7, 8]
Преимущество этого решениязаключается в том, что он работает, даже если дубликаты не являются последовательными.
Python 3.7 гарантирует порядок базовых словарей, так что простое толкование разборов решает его:
{v:i for i,v in enumerate(lst)}.values()