Question 1Que va afficher ce code ?print(all([1, 2, 0, 3]))
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.
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
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.
| Fonction | Renvoie True quand | Renvoie False quand | Sur une liste vide |
|---|---|---|---|
| all() | Chaque élément est True | Au moins un élément est False | True |
| any() | Au moins un élément est True | Chaque élément est False | False |
# 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
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.
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(...):.
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() ».
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 ».
Vérification des connaissances
Répondez à chaque question une par une.
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 ?