[我主要关注Python 3.7的any
和all
函数。有时,我想找出短路在哪里出现在布尔列表中
即。
any([False, False, True, False, True, True])
将返回2。
不使用循环的方法是什么?
编辑:我意识到这是第一次出现的问题。其中,已经有很多解决方案了:p
您可以使用itertools.takewhile
,它接受一个函数并且是可迭代的。可迭代的每个元素都传递到函数中,并一直使用到第一个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)
即使没有产生索引也内部短路。