列表中重复元素的顺序索引

时间:2018-11-29 09:55:52

标签: python arrays python-3.x list indexing

我有一个列表是

  

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,9,3,1,4]

相反,我想要一个列表,该列表也为每个重复值提供唯一索引。像这样:

  

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

如果索引已被使用,将跳过该索引,然后继续索引下一个重复值,然后进行进一步处理。 任何帮助,将不胜感激。预先感谢。

2 个答案:

答案 0 :(得分:1)

类似的事情可能起作用:

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用于1行命令:

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

适用于python2和python3。

答案 1 :(得分:0)

如果我的理解正确,那么您就是在想这个。是否重复,您似乎只想要一个从0a的最后一个索引的列表。

如果是这种情况,只需发出

>>> 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]