测试python列表的所有元素是否为False

时间:2015-06-28 12:01:58

标签: python list numpy

如何返回' false'因为所有元素都是“假”?

给定的清单是:

data = [False, False, False]

5 个答案:

答案 0 :(得分:86)

使用any

>>> data = [False, False, False]
>>> not any(data)
True
如果迭代中有任何真值,

any将返回True。

答案 1 :(得分:13)

基本上有两个函数处理iterable并返回True或False,具体取决于序列的哪些布尔值元素值。

    如果all(iterable)的所有元素都被视为真值(例如iterable),则
  1. reduce(operator.and_, iterable)会返回True。

  2. any(iterable)如果iterable的至少一个元素是真值,则返回True(同样,使用功能性内容,reduce(operator.or_, iterable))。

  3. 使用all函数,您可以将operator.not_映射到列表上,或者只是构建一个带有否定值的新序列,并检查新序列的所有元素是否为真:

    >>> all(not element for element in data)
    

    使用any函数,您可以检查至少有一个元素为真,然后否定结果,因为如果有一个真正的元素,您需要返回False

    >>> not any(data)
    

    根据De Morgan的定律,这两个变体将返回相同的结果,但我更喜欢最后一个(使用any)因为它更短,更易读(并且可以直观地)理解为"数据中没有真正的价值,而且效率更高(因为你不构建任何额外的序列)。

答案 2 :(得分:0)

这是使用生成器表达式的另一种方法:

data = [False, False, False]
try:
    out = next(elt for elt in data if elt) # holds the value of first non-empty element
except StopIteration:
    print("all elements are empty")

data = [[], [], [1], [2]]
try:
    out = next(elt for elt in data if elt) # [1]
except StopIteration:
    print("all elements are empty")

答案 3 :(得分:0)

我们都知道(k,v)也被认为是False,所以如果所有元素的0都是sum,这意味着列表中的所有元素都是0 .
但既然你想要:

<块引用>

返回'false',因为所有元素都是'false'

要做到这一点,请使用否定运算符 Falsenot

!

答案 4 :(得分:-6)

来吧,伙计们,他要求返回True是否有任何真实。 说同样的,当所有都是假的时候是假的。

any(data)