2015-06-28 49 views

回答

52

使用any

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

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

+1

应该是全部吗? – Ajay

+2

@Ajay,使用'all':'all(数据中x不是x)' – falsetru

+0

是的,全部都是假的。 – jean

9

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

  1. all(iterable)返回true如果iterable的所有元素被认为是真值(如reduce(operator.and_, iterable))。

  2. any(iterable)如果iterable中至少有一个元素是真值(同样使用功能性内容reduce(operator.or_, iterable)),则返回True。

使用all功能,可以映射operator.not_在你的列表或者只是建立与否定值的新序列,并检查新序列中的所有元素都为真:

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

随着any功能,您可以检查至少有一个元素为真,然后否定结果,因为如果存在真实元素,则需要返回False

>>> not any(data) 

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

+5

)任何()解决方案一旦找到真值就会停止,所以通常会更快。 –

-2

来吧,伙计们,他要求返回True是否有True。 说法相同,全部为假时为假。

any(data) 
相关问题