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

如果列表中的所有元素都是 False,如何返回 False

给出的清单如下:

data = [False, False, False]
154160 次浏览

使用 any:

>>> data = [False, False, False]
>>> not any(data)
True

如果迭代器中有任何真值,any将返回 True。

基本上有两个函数处理可迭代的,并根据序列的布尔值元素的计算结果返回 True 或 False。

  1. all(iterable) returns True if all elements of the iterable are considered as true values (like reduce(operator.and_, iterable)).

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

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

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

使用 any函数,您可以检查至少有一个元素为 true,然后取消结果,因为如果有一个元素为 true,则需要返回 False:

>>> not any(data)

根据德摩根定律,这两个变体将返回相同的结果,但我更喜欢最后一个(使用 any) ,因为它更短,更可读(可以直观地理解为“数据中没有真值”)和更有效(因为你不构建任何额外的序列)。

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

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")

We all know that False is also considered 0, So if sum of all elements is 0, which means all elements within list are False.
但既然你想:

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

要做到这一点,可以使用负运算符 not!

data = [False, False, False]
print(sum(data)!=0) #False

True 和 False 是0和1的布尔表示形式。 True = 1 and Flase = 0

data = [False, False, False]
if sum(data)== 0:
return False
if sum(data) == len(data):
return True

Sum (data)表示列表中分别为 True (1)和 False (0)的1和0的加法。

都是假的和为0的情况下, 在 都是真的的情况下,和是 等于列表的长度。 除0和1之外的任何和值都表示并非全部为 False 或 True。