Les compréhensions : des boucles en une ligne
Une boucle, résumée
Tu as écrit des dizaines de fois ce motif : une liste vide, une boucle, un append.
carres = []
for n in range(1, 6):
carres.append(n * n)
# [1, 4, 9, 16, 25]
Python permet de l'écrire en une seule ligne :
carres = [n * n for n in range(1, 6)]
Lis-la comme une phrase : « la liste des n * n, pour chaque n dans range(1, 6) ». Compare les deux versions : c'est exactement la même boucle, réorganisée.
[ n * n for n in range(1, 6) ]
ce qu'on la boucle, comme
ajoute d'habitude
Avec un filtre
On peut ajouter une condition à la fin, pour ne garder que certains éléments :
admis = [note for note in notes if note >= 10]
« La liste des note, pour chaque note dans notes, si note >= 10 ». C'est l'équivalent exact de :
admis = []
for note in notes:
if note >= 10:
admis.append(note)
Quatre lignes en une.
Pratique : Essaie les compréhensions
Prévois chaque résultat avant d'appuyer sur Entrée.
Un terminal simulé t'attend dans l'appli, sans rien installer. Pratiquer
Les compréhensions de dictionnaire, et la règle de lisibilité
Le même principe marche pour construire un dictionnaire, avec des accolades et une paire cle: valeur :
prix_ht = {"riz": 1000, "savon": 400}
prix_ttc = {produit: round(p * 1.1925) for produit, p in prix_ht.items()}
# {'riz': 1192, 'savon': 477}
Exercice : Les carrés
Range dans carres la liste des carrés des entiers de 1 à n inclus, avec une compréhension.
Voir une solution
n = 5 # donné
carres = [i * i for i in range(1, n + 1)]Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Filtrer les admis
Range dans admis les notes d'au moins 10, avec une compréhension et un if.
Voir une solution
notes = [12, 8, 15, 9.5, 10, 17] # donné
admis = [note for note in notes if note >= 10]Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Nettoyer une liste de noms
Une liste de noms a été saisie n'importe comment. Range dans propres les noms sans espaces autour et avec une majuscule au début de chaque mot, en retirant les noms vides.
Voir une solution
saisies = [" awa ", "BORIS", "", "jean-paul essomba ", " "] # donné
propres = [nom.strip().title() for nom in saisies if nom.strip() != ""]Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Les prix en euros
Construis le dictionnaire prix_euros qui associe à chaque produit son prix en euros, arrondi à 2 chiffres, avec une compréhension de dictionnaire. Rappel : 1 euro = 655,957 FCFA.
Voir une solution
prix_fcfa = {"riz": 1200, "savon": 500, "huile": 1500} # donné
TAUX_EURO = 655.957
prix_euros = {produit: round(p / TAUX_EURO, 2) for produit, p in prix_fcfa.items()}Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Récap : le tableau des clients majeurs
À partir de clients, construis avec une seule compréhension la liste majeurs des noms en majuscules des clients d'au moins 18 ans.
Voir une solution
clients = [{"nom": "Awa", "age": 19}, {"nom": "Boris", "age": 16}, {"nom": "Chantal", "age": 23}] # donné
majeurs = [c["nom"].upper() for c in clients if c["age"] >= 18]Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice