查找数组中特定重复数的索引

时间:2018-06-13 01:52:20

标签: python python-2.7 indexing duplicates

我试图获取数组中某些重复元素的索引。这是代码:

cc = []

ang=[12,13,89.0,14,15,16,89.0,17]

class Index:

    def __init__(self, **kwargs):
        self.Angle = kwargs['Angle']

    def ind(self):

        for mm in range(0, len(self.Angle)):

            if self.Angle[mm] == 89.0:
                ee = self.Angle.index(self.Angle[mm])
                cc.append(ee)
        return cc

plus = Index(Angle=ang)
plus1 = plus.ind()

print (plus1)

我想在列表(ang)中找到重复数= 89.0 的索引。我期待得到[2,6] ,但我一直[2,2]这是错误的。有谁知道我怎么解决它?我知道可以通过更改此代码的格式来实现它,但我更喜欢保留这种格式(使用kwargs和类)。谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为list.index(<element>)返回元素的索引。如果元素出现多次index(),则始终返回第一次出现的索引。

但是,在您的代码中,您不需要调用index,因为您通过已经是索引的mm访问该元素。为什么不追加mm。像:

if self.Angle[mm] == 89.0:
    cc.append(mm)

此外,可以使用列表理解来优雅地编写相同的代码,如:

indexes = [x for x in range(0, len(self.Angle)) if self.Angle[x] == 89.0]