为。布尔列表实现.all()?

时间:2013-10-17 13:09:55

标签: python list boolean

对于布尔数组,Numpy有一个很好的方法.all(),测试所有值是否为真。我想做同样的事情而不给我的项目添加numpy。标准库中有类似的东西吗?否则,你将如何实现它?

我当然可以想到明显的方法:

def all_true(list_of_booleans):
    for v in list_of_booleans:
        if not v:
            return False
    return True

是否有更优雅的方式,也许是单行?

2 个答案:

答案 0 :(得分:5)

有;令人惊讶的是,它被称为all()。它正如你所描述的那样完全实现,尽管在C.引用文档:

  

如果 iterable 的所有元素都为true(或者如果是),则返回True   iterable是空的)。相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
     

2.5版中的新功能。

这不仅限于布尔人。请注意,这需要可迭代;传入生成器表达式意味着只有足够的生成器表达式将被评估以测试假设:

>>> from itertools import count
>>> c = count()
>>> all(i < 10 for i in c)
False
>>> next(c)
11

还有一个等效的any() function

答案 1 :(得分:2)

有一个类似的功能,称为all()