由于所有元素均为“ false”,如何返回“ false”?
给定的列表是:
data = [False, False, False]
Answers:
基本上,有两个函数处理一个Iterable并根据序列中的哪个布尔值元素返回True或False。
all(iterable)
如果将的所有元素iterable
都视为true值(如reduce(operator.and_, iterable)
),则返回True 。
any(iterable)
如果中的至少一个元素为iterable
true值(同样,使用函数式东西reduce(operator.or_, iterable)
),则返回True 。
使用该all
函数,您可以映射operator.not_
到列表中,或仅使用取反的值构建一个新序列,并检查新序列的所有元素是否正确:
>>> all(not element for element in data)
使用此any
函数,您可以检查至少一个元素为true,然后取反,因为False
如果存在true元素,则需要返回:
>>> not any(data)
根据De Morgan的定律,这两个变体将返回相同的结果,但是我更喜欢最后一个变体(使用any
),因为它更短,更易读(并且可以直观地理解为“数据中没有真正的价值” ”),效率更高(因为您无需构建任何额外的序列)。
any()
它找到一个真正有价值的解决方案,就立即停止,因此通常会更快。
all
:all(not x for x in data)