如何返回' false'因为所有元素都是“假”?
给定的清单是:
data = [False, False, False]
答案 0 :(得分:86)
答案 1 :(得分:13)
基本上有两个函数处理iterable并返回True或False,具体取决于序列的哪些布尔值元素值。
all(iterable)
的所有元素都被视为真值(例如iterable
),则 reduce(operator.and_, iterable)
会返回True。
any(iterable)
如果iterable
的至少一个元素是真值,则返回True(同样,使用功能性内容,reduce(operator.or_, iterable)
)。
使用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'
要做到这一点,请使用否定运算符 False
或 not
。
!
答案 4 :(得分:-6)
来吧,伙计们,他要求返回True是否有任何真实。 说同样的,当所有都是假的时候是假的。
any(data)