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

czq61nw1  于 2023-01-01  发布在  Python
关注(0)|答案(5)|浏览(213)

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

data = [False, False, False]
jyztefdp

jyztefdp1#

使用any

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

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

njthzxwz

njthzxwz2#

基本上有两个函数处理可迭代对象,并根据序列元素的布尔值返回True或False。
1.如果iterable的所有元素都被视为真值(如reduce(operator.and_, iterable)),则all(iterable)返回True。
1.如果iterable中至少有一个元素为真值,则any(iterable)返回True(同样,使用函数填充reduce(operator.or_, iterable))。
使用all函数,你可以将operator.not_Map到你的列表上,或者只是构建一个新的序列,并检查新序列的所有元素是否为真:

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

使用any函数,你可以检查至少一个元素为真,然后对结果取反,因为如果有一个真的元素,你需要返回False

>>> not any(data)

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

eagi6jfj

eagi6jfj3#

TrueFalse是0和1的布尔表示。
True = 1且False = 0

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

sum(data)表示在列表中将10分别与真(1)和假(0)的值相加。
在所有False和为0的情况下,
并且在全部为True的情况下,'sum等于列表的长度。
任何其他和值都意味着并非全部为False或True。

csga3l58

csga3l584#

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

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

ar7v8xwq5#

我们都知道False也被认为是0,所以如果所有元素的sum0,这意味着列表中的所有元素都是False
但既然你想:
返回“false”,因为所有元素都是“false”
为此,请使用求反运算符not!

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

相关问题