Есть ли способ получить индекс списка логических значений Python, где происходит короткое замыкание? - PullRequest
1 голос
/ 30 сентября 2019

Мое основное внимание было уделено any и all функциям Python 3.7. Иногда я хотел бы выяснить, где происходит короткое замыкание в списке логических значений

, т. Е.

any([False, False, True, False, True, True])

вернет 2.

Что такое способсделать это без использования цикла?

Редактировать: Я понял, что это проблема первого появления. У которого уже есть много решений: p

1 Ответ

0 голосов
/ 30 сентября 2019

Вы можете использовать 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 делает короткое замыкание , хотя это нене производит индекс.

...