【问题标题】:Implementing .all() for a list of booleans?为布尔值列表实现 .all()?
【发布时间】:2013-10-25 23:57:49
【问题描述】:

Numpy 有一个很棒的方法 .all() 用于布尔数组,它可以测试所有值是否为真。我想在不向我的项目中添加 numpy 的情况下做同样的事情。标准库中有类似的东西吗?不然怎么实现?

我当然可以想到显而易见的方法:

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

有没有更优雅的方式,也许是单线?

【问题讨论】:

    标签: python list boolean


    【解决方案1】:

    有;令人惊讶的是,它被称为all()。它完全按照您的描述实现,尽管是用 C 语言实现的。引用文档:

    如果 iterable 的所有元素都为真(或者如果 可迭代为空)。相当于:

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

    2.5 版中的新功能。

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

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

    还有一个等效的any() function

    【讨论】:

    • 不幸的是,我坚持使用 2.4 :-) 我会推出自己的。
    • 不幸的; 2.4 相当.. 很古老,到现在为止。
    • 我知道这个事实 :)
    【解决方案2】:

    有一个类似的函数,叫做all()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-22
      • 2012-10-11
      • 2015-01-21
      • 2011-12-22
      • 2022-08-11
      • 2021-03-15
      • 1970-01-01
      相关资源
      最近更新 更多