Подтвердить что ты не робот

Первый индекс списка Python больше, чем x?

Каким будет самый Pythonic способ найти первый индекс в списке, который больше, чем x?

Например, при

list = [0.5, 0.3, 0.9, 0.8]

Функция

f(list, 0.7)

вернет

2.
4b9b3361

Ответ 1

next(x[0] for x in enumerate(L) if x[1] > 0.7)

Ответ 2

filter(lambda x: x>.7, seq)[0]

Ответ 3

>>> alist= [0.5, 0.3, 0.9, 0.8]
>>> [ n for n,i in enumerate(alist) if i>0.7 ][0]
2

Ответ 4

если список отсортирован, тогда bisect_left(alist, value) быстрее для большого списка, чем next(i for i, x in enumerate(alist) if x >= value).

Ответ 5

for index, elem in enumerate(elements):
    if elem > reference:
        return index
raise ValueError("Nothing Found")

Ответ 6

Другой:

map(lambda x: x>.7, seq).index(True)

Ответ 7

У меня была аналогичная проблема, когда мой список был очень длинным. решения на основе понимания или на основе фильтров будут проходить через весь список. itertools.takewhile нарушит цикл, когда условие станет ложным в первый раз:

from itertools import takewhile

def f(l, b): return len([x for x in takewhile(lambda x: x[1] <= b, enumerate(l))])

l = [0.5, 0.3, 0.9, 0.8]
f(l, 0.7)

Ответ 8

>>> f=lambda seq, m: [ii for ii in xrange(0, len(seq)) if seq[ii] > m][0]
>>> f([.5, .3, .9, .8], 0.7)
2