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

问题描述 投票:0回答:1

[我主要关注Python 3.7的anyall函数。有时,我想找出短路在哪里出现在布尔列表中

即。

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

将返回2。

不使用循环的方法是什么?

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

python-3.x list boolean any short-circuiting
1个回答
0
投票

您可以使用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) 即使没有产生索引也内部短路。

© www.soinside.com 2019 - 2024. All rights reserved.