有没有办法提取发生短路的 Python 布尔值列表的索引?

Is there a way to pull the index of a Python list of booleans of where short circuiting occurs?

我主要关注 Python 3.7 的 anyall 功能。有时,我想找出布尔值列表中短路发生的位置

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

会return 2.

有什么方法可以不使用循环来做到这一点?

编辑:我意识到这是第一次出现的问题。其中,已经有很多解决方案了:p

您可以使用 itertools.takewhile,它接受一个函数和一个可迭代对象。 iterable 的每个元素都被传递到函数中,直到第一个 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 中真值索引的迭代器,并将其转发到第一个真值索引,这也是短路和 space-高效的。

any does short circuit 虽然它不产生索引。