Вы можете использовать itertools.takewhile
, который принимает функцию и повторяемость. Каждый элемент итерируемого объекта передается в функцию и принимается до первого False
.
>>> from itertools import takewhile
>>> lst = [False, False, True, False, True, True]
>>> len(list(takewhile(lambda x: not x, lst)))
2
. Другой вариант из комментариев -
next(i for i, val in enumerate(mylist) if val)
, что делает итератор индексовИстинные значения в mylist
и передают его на один шаг к первому индексу истинных значений, который также является коротким замыканием и экономит место.
any
делает короткое замыкание , хотя это нене производит индекс.