【问题标题】:Sequenced indexing of duplicate elements in a list列表中重复元素的排序索引
【发布时间】:2019-05-01 08:25:09
【问题描述】:

我有一个列表是:

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]

如果它已被使用,则跳转索引并继续索引下一个重复值并进一步执行此操作。 任何帮助,将不胜感激。提前致谢。

【问题讨论】:

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


【解决方案1】:

如果我理解正确,你想多了。无论是否重复,您似乎只想要一个从 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]

【讨论】:

    【解决方案2】:

    这样的事情可能会奏效:

    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。

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      相关资源
      最近更新 更多