【问题标题】:Finding indexes of a specific repeated number in array查找数组中特定重复数字的索引
【发布时间】:2018-11-22 11:53:05
【问题描述】:

我正在尝试获取数组中某些重复元素的索引。代码如下:

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)中找到repeated number = 89.0的索引。我希望得到 [2,6] 但我一直得到 [2,2] 这是错误的。有人知道我该如何解决吗?我知道可以通过更改此代码的格式来做到这一点,但我更喜欢保留这种格式(使用 kwargs 和 class)。谢谢!

【问题讨论】:

  • 只要使用[i for i, e in enumerate(ang) if e == 89.0]
  • 我喜欢enumerate,而不是下面的建议。

标签: python python-2.7 indexing duplicates


【解决方案1】:

这是因为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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-21
    • 2014-11-12
    • 2017-03-08
    • 2021-12-10
    • 2020-01-25
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多