Есть ли функция python для получения всех индексов из уникальных значений? - PullRequest
0 голосов
/ 08 февраля 2020

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

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

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

Есть предложения?

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

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

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

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

1 голос
/ 08 февраля 2020

Не знаю ни одного готового решения, возможно, вам нужно создать собственное. Для этого есть разные подходы, но с классической реализацией 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]
...