在python中查找列表的唯一元素的索引?

Kal*_*lol 3 python indexing list

我有一个这样的清单:

l=[1,2,2,3,4,5,5,5]
Run Code Online (Sandbox Code Playgroud)

我们可以看到列表列表包含 5 个唯一值,总共有 8 个值。

我想要列表格式的列表中唯一值的索引。

所以输出看起来像:

indexes=[0,1,3,4,5]
Run Code Online (Sandbox Code Playgroud)

如何使用 python 以最有效的方式做到这一点?

rap*_*ael 9

为什么np.unique这里没人提??

import numpy as np
np.unique([1,6,6,2,2,3,4,5,5,5], return_index=True)

>>> (array([1, 2, 3, 4, 5, 6]), array([0, 3, 5, 6, 7, 1], dtype=int64))
Run Code Online (Sandbox Code Playgroud)

第一个数组包含(排序的)唯一值,第二个数组(如果return_index设置为True则返回)是第一次出现的索引列表


Sve*_*ger 7

您可以为此使用内置类型。

代码

l=[1,2,2,3,4,5,5,5]

indexes = [l.index(x) for x in set(l)]
Run Code Online (Sandbox Code Playgroud)

解释

  • set
    列表中的所有唯一成员。
  • list.index
    返回元素的第一个索引。

评论

正如在评论中指出,如果为了对你很重要,你可以使用sortedset或者根据提供的数据生成的索引列表。如果数据已经排序,我建议这样做:

indexes = [l.index(x) for x in sorted(set(l))]
Run Code Online (Sandbox Code Playgroud)