Numpy 有一个很好.all()
的布尔数组方法,可以测试所有值是否为真。我想在不向我的项目中添加 numpy 的情况下做同样的事情。标准库中有类似的东西吗?否则,你将如何实施?
我当然可以想到明显的方法:
def all_true(list_of_booleans):
for v in list_of_booleans:
if not v:
return False
return True
有没有更优雅的方式,也许是单线?
有; 令人惊讶的是,它被称为all()
。它完全按照您的描述实现,尽管是在 C 中。引用文档:
如果可迭代
True
对象的所有元素都为真(或者可迭代对象为空),则返回。相当于: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()
功能。
有一个类似的功能,称为all()
.