Нахождение индексов определенного повторного числа в массиве - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь получить индекс некоторых повторяющихся элементов в массиве.Вот код:

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)

Я хочу найти в списке индекс повторного числа = 89.0 (анг).Я ожидаю получить [2,6] , но продолжаю получать [2,2], что неправильно .Кто-нибудь знает, как я могу это исправить?Я знаю, что возможно сделать это, изменив формат этого кода, но я предпочитаю сохранять этот формат (используя kwargs и class).Спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Это потому, что 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...