web-dev-qa-db-fra.com

Teste si tous les éléments d'une liste python sont faux

Comment retourner 'faux' car tous les éléments sont 'faux'?

La liste donnée est:

data = [False, False, False]
47
hiker

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.

95
falsetru

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.

  1. all(iterable) renvoie True si tous les éléments de iterable sont considérés comme des valeurs vraies (comme reduce(operator.and_, iterable)).

  2. 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).

16
Alexey Orlenko