Apprenez en lisant dans l'ordre

Vérifications groupées avec all() et any()

Apprends à utiliser all() et any() en Python pour vérifier des conditions multiples sur une collection en une ligne.

all() — True uniquement quand chaque élément est True

all(iterable) retourne True quand chaque élément de la liste, du tuple ou de l'ensemble que tu passes est True (ou s'évalue comme truthy), et False dès qu'un seul élément est False.

Comment all() décide
[T, T, T]all()True[T, F, T]all()False[ ] (vide)all()True

True si chaque élément est True. False dès qu'un élément est False. True quand on lui passe un iterable vide.

Les mêmes règles de truthiness vues dans l'article précédent s'appliquent : 0, les chaînes vides et les listes vides sont traités comme False, donc une liste de nombres contenant 0 fait que all() renvoie False.

# Une liste de bools : False dès qu'un élément est False
print(all([True, True, True]))    # True
print(all([True, False, True]))   # False

# Une liste de nombres : False si 0 est dedans
print(all([1, 2, 3]))             # True
print(all([1, 0, 3]))             # False

# Tous les champs obligatoires du formulaire sont-ils remplis ?
form_values = ["Alice", "alice@example.com", "100 rue de la Paix, Paris"]
if all(form_values):
    print("Prêt à soumettre")
else:
    print("Certains champs sont vides")
# Sortie : Prêt à soumettre

Vérifie que chaque article du panier est en stock.

① Définis in_stock = [True, True, True, False].

② Affiche le résultat de all(in_stock).

③ Avec if all(in_stock):, affiche « Passer au paiement » si tout est en stock, sinon « Certains articles sont en rupture ».

(L'explication apparaît une fois que tu auras exécuté le code correctement.)

Éditeur Python

Exécuter le code pour voir le résultat

any() — True dès qu'au moins un élément est True

any(iterable) renvoie True dès qu'au moins un élément est True, et False uniquement quand chaque élément est False. Là où all() est la vérification stricte qui exige une approbation unanime, any() est la vérification souple qui se contente d'une seule correspondance.

FonctionRenvoie True quandRenvoie False quandSur une liste vide
all()Chaque élément est TrueAu moins un élément est FalseTrue
any()Au moins un élément est TrueChaque élément est FalseFalse
# Une liste de bools : True si au moins un est True
print(any([False, False, True]))   # True
print(any([False, False, False]))  # False

# Réessayer si au moins un drapeau d'erreur a été levé
error_flags = [False, False, True, False]
if any(error_flags):
    print("Une nouvelle tentative est nécessaire")
else:
    print("Tout a réussi")
# Sortie : Une nouvelle tentative est nécessaire

Vérifie qu'au moins un participant au sondage déclare vouloir venir.

① Définis want_to_join = [False, False, False, True, False].

② Affiche le résultat de any(want_to_join).

③ Avec if any(want_to_join):, affiche « Maintenir l'événement » s'il y a au moins un oui, sinon « Annuler ».

Éditeur Python

Exécuter le code pour voir le résultat

Comportement quand on passe une collection vide

Quand tu passes une liste vide, all([]) renvoie True et any([]) renvoie False. C'est contre-intuitif, donc fais attention quand les données peuvent légitimement avoir zéro élément.

Comportement sur une collection vide
[ ] (vide)all()True[ ] (vide)any()False
print(all([]))   # True  <- pas de "False" à trouver, donc True
print(any([]))   # False <- pas de "True" à trouver, donc False

# Exemple : un panier sans article enregistré
cart = []
if all(cart):
    print("Tous les articles vérifiés")   # s'exécute même si le panier a 0 article
# Cela peut ne pas correspondre à ton intention, vérifie d'abord si c'est vide

Décide en amont comment gérer les listes vides

Quand tu utilises all() dans l'esprit « si chaque membre satisfait la condition… », 0 membre renvoie quand même True. Pour éviter une validation involontaire, vérifie d'abord que la liste n'est pas vide, comme if members and all(...):.

Confirme par toi-même le comportement sur liste vide.

① Définis empty = [].

② Affiche les résultats de all(empty) et any(empty).

③ Utilise if empty and all(empty): pour afficher « Tous les articles OK » uniquement quand la liste n'est pas vide et que tout vaut True (vérifie que rien ne s'affiche pour la liste vide).

Éditeur Python

Exécuter le code pour voir le résultat

Combiner avec des conditions pour vérifier en bloc

all() / any() brillent vraiment quand on les combine avec des expressions de comparaison. Pour vérifier « ont-ils tous 18 ans ou plus ? », construis une liste de résultats >= 18 à partir des âges et passe-la — toute la vérification tient sur une ligne.

ages = [19, 20, 18, 25, 57]

# Construis d'abord une liste de bools, puis passe-la à all (la version en 2 étapes la plus simple)
checks = [age >= 18 for age in ages]
print(checks)         # [True, True, True, True, True]
print(all(checks))    # True

# Ou écris-le en ligne (compréhensions de liste / expressions génératrices — vues ensuite)
print(all(age >= 18 for age in ages))   # True
print(any(age >= 65 for age in ages))   # False

On couvrira les compréhensions de liste comme [age >= 18 for age in ages] en détail dans le chapitre sur for. Pour l'instant, il suffit de saisir l'idée que « tu peux évaluer une condition sur toute une liste et passer le résultat directement à all() / any() ».

Utilise une liste de scores de test pour faire des jugements style réussite/échec.

① Définis scores = [78, 82, 65, 91, 55].

② Décide si tout le monde a au moins 60 (avec all) et si au moins une personne a 90 ou plus (avec any), et affecte-les à all_pass et has_genius.

③ Affiche les deux résultats.

Éditeur Python

Exécuter le code pour voir le résultat

Dans cet article, on a appris all() et any() pour vérifier en bloc le contenu de listes ou tuples.

all() exige que tout le monde réussisse, any() se contente d'au moins un, et sur une entrée vide all vaut True tandis que any vaut False. Dans le prochain article, on plongera dans la boucle for elle-même — le moteur derrière l'expression [... for ... in ...] qui est apparue discrètement ici comme « liste de résultats ».

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Que va afficher ce code ?
print(all([1, 2, 0, 3]))

Question 2Que va afficher ce code ?
print(any([False, False, False]))

Question 3Quand on passe une liste vide [], quelle combinaison de valeurs de retour de all([]) et any([]) est correcte ?