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

hik*_*ker 51 python numpy list

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

给定的列表是:

data = [False, False, False]
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 103

使用any:

>>> data = [False, False, False]
>>> not any(data)
True
Run Code Online (Sandbox Code Playgroud)

any 如果迭代中有任何真值,则返回True.

  • 应该是全部吗? (3认同)
  • @Ajay,使用`all`:`all(数据中x不是x)` (3认同)
  • @HaroldSeefeld 会的,python 可以测试所有内置类型的真实性 (3认同)
  • 0, [], {},()..etc 都是假的非布尔数据..:) (2认同)

Ale*_*nko 16

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

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

  2. any(iterable)如果至少有一个元素iterable是真值,则返回True (同样,使用函数reduce(operator.or_, iterable)).

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

>>> all(not element for element in data)
Run Code Online (Sandbox Code Playgroud)

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

>>> not any(data)
Run Code Online (Sandbox Code Playgroud)

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

  • `any()`解决方案一旦找到True值就会停止,因此通常会更快. (5认同)