Как перестать смотреть, возвращая None, когда есть элемент, который удовлетворяет условию if? - PullRequest
0 голосов
/ 22 апреля 2019

Я перебираю список логических значений. Мои условия: если позиция элемента> m и if the element = True

, функция вернет позицию элемента

.что я сделал:

panda =[True, True, True, True]

def find_next (l, m): 
    for i in l:  
        if ((l.index(i) > m) and i ==True):
            return l.index(i) 

print(find_next(panda, 2))

Я ожидал, что результат будет 3.

, но я получил None.почему?

1 Ответ

1 голос
/ 22 апреля 2019

l.index(i) всегда возвращает 0, поскольку находит первый экземпляр True в вашем списке

Кроме того, вам не нужно вызывать l.index в каждом цикле, потому что вы выполняете избыточный поиск в списке, когда уже знаете, на какой итерации вы находитесь.

def find_next(l, m):
    for index, value in enumerate(l):
        if index > m and value:
            return index
...