查找重复元素的索引[重复]

Posted

技术标签:

【中文标题】查找重复元素的索引[重复]【英文标题】:Find the index of the repeated elements [duplicate] 【发布时间】:2022-01-18 09:44:47 【问题描述】:

假设我有一个包含 905 个元素的列表:

roughness = [140.0, 120.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 140.0, 140.0, 120.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 140.0, 120.0, 140.0, 120.0, 140.0, 120.0, 120.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 140.0, 140.0, 120.0, 120.0, 140.0, 140.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 120.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 120.0, 120.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0, 140.0]

我想在上面显示的列表中找到“120”元素的所有索引。 我尝试使用代码来做到这一点:

all_index = []
for i in roughness:
    if i == 120:
        index = roughness.index(i)
        all_index.append(index)
print(all_index)

但它只返回第一个'120'的索引,如[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

您能否给我一些关于如何在粗糙度列表中找到“120”的每个元素的索引的想法?非常感谢!

【问题讨论】:

【参考方案1】:

使用enumerate函数:

out = [i for i,x in enumerate(roughness) if x==120]

如果依赖性不是问题,您也可以使用numpy.where

out = np.where(np.array(roughness)==120)

输出:

    [    1,   3,   8,  34,  35,  36,  39,  41,  42,  43,  44,  45,  46,
        47,  49,  50,  51,  64,  71,  72,  73,  74,  75,  77,  85, 144,
       145, 146, 147, 148, 149, 150, 151, 154, 156, 158, 159, 161, 178,
       179, 180, 185, 194, 206, 215, 228, 229, 235, 339, 340, 341, 342,
       343, 344, 352, 353, 354, 355, 356, 357, 358, 371, 372, 373, 384,
       385, 388, 389, 392, 393, 398, 399, 400, 403, 404, 405, 406, 531,
       532, 533, 546, 547, 672, 673, 674, 675, 676, 677, 678, 679, 736,
       737, 787, 788, 789, 798, 799, 800, 801, 802, 803, 804, 811, 812,
       813, 814, 815, 816, 817, 818, 819, 820, 833, 834, 835, 836, 837,
       864, 865]

【讨论】:

【参考方案2】:

使用for i in roughness 可能有一种简单的方法可以做到这一点,但我会这样做:

all_index = []

for i in range(len(roughness)):
  if roughness[i] == 120
    all_index.append(i)

print(all_index)

【讨论】:

【参考方案3】:

你就是这样做的:

indices = []
for i in range(len(roughness)):
   if roughness[i] == 120:
      indices.append(i)

print(indices)

输出如下:

[1, 3, 8, 34, 35, 36, 39, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 64, 71, 72, 73, 74, 75, 77, 85, 144, 145, 146, 147, 148, 149, 150, 151, 154, 156, 158, 
159, 161, 178, 179, 180, 185, 194, 206, 215, 228, 229, 235, 339, 340, 341, 342, 343, 344, 352, 353, 354, 355, 356, 357, 358, 371, 372, 373, 384, 385, 388, 389, 392, 393, 398, 399, 400, 403, 404, 405, 406, 531, 532, 533, 546, 547, 672, 673, 674, 675, 676, 677, 678, 679, 736, 737, 787, 788, 789, 798, 799, 800, 801, 802, 803, 804, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 833, 834, 835, 836, 837, 864, 865]

【讨论】:

以上是关于查找重复元素的索引[重复]的主要内容,如果未能解决你的问题,请参考以下文章

查找列表中元素的索引[重复]

查找第二次出现索引最低的第一个重复元素

编写在数字数组中查找元素索引的函数[重复]

如何查找列表中所有唯一元素的所有索引[重复]

在数组中查找具有更大索引但数组中值较小的元素[重复]

查找重复项并将其替换为具有相同索引位置的新数组