Explication de la leçon
Après cette leçon, tu seras capable de :
any() pour détecter si au moins une condition est vraie.all() pour exiger que chaque condition soit vraie.any([]) == False et all([]) == True lorsqu'une entrée vide est possible.Lorsqu'une décision dépend de nombreuses valeurs, évite d'écrire des compteurs ou de longues chaînes de or et and inutilement.
any(values) est vrai si au moins une entrée est truthy.all(values) est vrai si chaque entrée est truthy.Tu peux d'abord convertir les données en booléens avec une compréhension de liste. Cette leçon utilise délibérément les compréhensions que tu connais déjà ; les expressions génératrices viendront plus tard.
checks = [result == "ok" for result in results]Pour une entrée vide, any([]) vaut False, mais all([]) vaut True. C'est utile mathématiquement, mais un workflow de mise en production nécessite généralement au moins une vérification avant de signaler que toutes les vérifications ont réussi. Ajoute une exigence explicite de non-vacuité lorsque la règle métier l'exige.
alerts = [False, True, False]
print(any(alerts))Sortie :
TrueUn seul élément truthy suffit.
latencies = [42, 90, 110]
within_limit = [value <= 120 for value in latencies]
print(all(within_limit))Sortie :
TrueChaque comparaison est vraie.
print(any([]))
print(all([]))Sortie :
False
TrueSi une liste vide signifie « aucune vérification n'a été exécutée », tu peux avoir besoin de bool(checks) and all(checks) à la place.
responses = [" PASS ", "pass", " FAIL "]
normalized = [value.strip().lower() for value in responses]
print(any([value == "fail" for value in normalized]))Sortie :
TrueNormalise avant de comparer afin que la casse et les espaces ne modifient pas la décision.
| Exigence | Vérification |
|---|---|
| Une ou plusieurs valeurs satisfont un prédicat | any([...]) |
| Chaque valeur satisfait un prédicat | all([...]) |
| Aucune valeur ne satisfait un prédicat | not any([...]) |
| Exiger au moins une valeur et toutes valides | bool(values) and all([...]) |
all([]) vaut True—cela ne signifie pas qu'une validation réelle a eu lieu.any() signifie « au moins un », et non « exactement un ».not any(...) avec not all(...)—ils décrivent des situations différentes.