测试python列表的所有元素是否为False
由于所有元素都是“false”,如何返回“false” 所列名单如下:测试python列表的所有元素是否为False,python,list,numpy,Python,List,Numpy,由于所有元素都是“false”,如何返回“false” 所列名单如下: data = [False, False, False] 使用: any如果iterable中有真值,将返回True。基本上有两个函数处理iterable并返回True或False,具体取决于序列元素计算的布尔值 all(iterable)如果iterable的所有元素都被视为真值(如reduce(operator.and u,iterable)),则返回True any(iterable)如果iterable中至少有一个
data = [False, False, False]
使用:
any
如果iterable中有真值,将返回True。基本上有两个函数处理iterable并返回True或False,具体取决于序列元素计算的布尔值
all(iterable)
如果iterable
的所有元素都被视为真值(如reduce(operator.and u,iterable)
),则返回Trueany(iterable)
如果iterable
中至少有一个元素是真值,则返回True(同样,使用functional stuff,reduce(operator.or,iterable)
)all
功能,您可以将运算符映射到列表上,而不是映射到列表上,或者只需使用求反值构建一个新序列,并检查新序列的所有元素是否为真:
>>> all(not element for element in data)
使用any
函数,您可以检查至少一个元素是否为真,然后否定结果,因为如果存在真元素,则需要返回False
:
>>> not any(data)
根据De Morgan定律,这两个变量将返回相同的结果,但我更喜欢最后一个(使用any
),因为它更短、可读性更强(并且可以直观地理解为“数据中没有真正的值”),而且效率更高(因为您不构建任何额外的序列)。来吧,伙计们,他要求返回True是否存在任何True。
说同样的话,当一切都是假的时候,就错了
any(data)
下面是使用生成器表达式的另一种方法:
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")
@Ajay,要使用all
:all(数据中不是x代表x)
注意:如果在数组中包含非布尔数据,这将不起作用。@HaroldSeefeld,试试不要任何([0,0,0])
@HaroldSeefeld它会的,python可以测试所有内置类型0、[]、{}、()…等的真实性都是假非布尔数据。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")