Последовательная индексация дублирующихся элементов в списке - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть список:

a = [100, 200, 200, 400, 500, 600, 600, 700, 900, 1000, 400, 200, 500]

, если я пытаюсь найти индексы значений в 'a', используя:

xlist=[]
for value in a:
    x = np.array(a.index(value), value)
    xlist.append(x)
print(xlist)

, это дает мне

xlist = [0, 1,1, 3, 4, 5, 5, 7, 8, 9, 3, 1, 4]

Вместо этого я хочу получить список, который также дает мне уникальные индексы для каждого повторяющегося значения.Примерно так:

xlist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

То, что скачет по индексу, если он уже используется, и переходит к индексу следующего повторяющегося значения и делает это дальше.Любая помощь будет оценена.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Если я правильно понимаю, вы обдумываете это.Дубликаты или нет, вы, похоже, просто хотите, чтобы список шел от 0 до последнего индекса a.

Если это так, просто введите

>>> list(range(len(a))) # Python 3
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

или

>>> range(len(a)) # Python 2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
0 голосов
/ 29 ноября 2018

Примерно так может работать:

In [1030]: a = [100, 200, 200, 400, 500, 600, 600, 700, 900, 1000, 400, 200, 500]
In [1036]: idx = []

In [1037]: for index, val in enumerate(a):
      ...:     idx.append(index)

In [1038]: idx
Out[1038]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

ИЛИ использовать list comprehensions для однострочной команды:

In [1042]: idx = [index for index,val in enumerate(a)]

Работает как для python2, так и для python3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...