Есть ли функция Python, чтобы получить все индексы из уникальных значений?

Я знаю, что есть методы, такие как set () или np.unqiue () для получения уникальных значений из списков. Но я ищу способ получить индекс для значения, которое встречается не более одного раза.

пример = [0,1,1,2,3,3,4]

что я ищу
wanted_index_list = [0,3,6]

Какие-либо предложения?

Всего 2 ответа


Не знаю ни одного готового решения, возможно, вам нужно создать свое собственное. Для этого есть разные подходы, но с классической реализацией Python вы можете легко создать count_dict и отфильтровать те значения из исходного списка, у которых есть счетчик 1.

>>> from collections import Counter
>>> example = [0,1,1,2,3,3,4]
>>> counted = Counter(example)
>>> desired_index_list = [index for index, elem in enumerate(example) if counted[elem] == 1]
>>> desired_index_list
[0, 3, 6]

Вы можете сделать это как однострочник с пониманием списка:

from collections import Counter
[example.index(x) for x, y in Counter(example).items() if y == 1]

(Используя Счетчик, верните кортежи для каждого элемента (x) и номер его вхождения (y), и верните индекс элемента, если его количество равно 1).


Есть идеи?

10000