Comment retourner 'faux' car tous les éléments sont 'faux'?
La liste donnée est:
data = [False, False, False]
Utiliser any
:
>>> data = [False, False, False]
>>> not any(data)
True
any
retournera True s'il y a une valeur de vérité dans l'itérable.
Fondamentalement, deux fonctions traitent un itératif et renvoient Vrai ou Faux en fonction des valeurs booléennes auxquelles les éléments de la séquence sont évalués.
all(iterable)
renvoie True si tous les éléments de iterable
sont considérés comme des valeurs vraies (comme reduce(operator.and_, iterable)
).
any(iterable)
renvoie True si au moins un élément de iterable
est une valeur vraie (encore une fois, à l'aide de fonctions, reduce(operator.or_, iterable)
).
En utilisant la fonction all
, vous pouvez mapper operator.not_
sur votre liste ou créez simplement une nouvelle séquence avec des valeurs inversées et vérifiez que tous les éléments de la nouvelle séquence sont vrais:
>>> all(not element for element in data)
Avec la fonction any
, vous pouvez vérifier qu’au moins un élément est vrai, puis annuler le résultat, car vous devez renvoyer False
s’il existe un élément vrai:
>>> not any(data)
Selon la loi de De Morgan, ces deux variantes donneront le même résultat, mais je préférerais la dernière (qui utilise any
) car elle est plus courte, plus lisible (et peut être comprise intuitivement comme "il n'y a pas t une valeur vraie dans les données ") et plus efficace (puisque vous ne construisez aucune séquence supplémentaire).