Python — Boucles et compréhensions de listes
1) Boucle for
Les boucles servent à exécuter plusieurs fois un même bloc de code.
planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
for planet in planets:
print(planet, end=" ") # tout sur une ligne
Sortie
Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune
- La variable de boucle ici est
planet. - On boucle sur la séquence
planets. - Tout objet itérable peut être parcouru : listes, tuples, chaînes, etc.
Exemple avec un tuple :
multiplicands = (2, 2, 2, 3, 3, 5)
product = 1
for mult in multiplicands:
product = product * mult
print(product)
Sortie
360
Boucler sur les caractères d’une chaîne :
s = "steganograpHy is the practicE of conceaLing a file, message, image, or video within another fiLe, message, image, Or video."
# afficher uniquement les lettres majuscules, sans espace
for char in s:
if char.isupper():
print(char, end="")
Sortie
HELLO
2) La fonction range()
for i in range(5): # 0,1,2,3,4
print("Doing important work. i =", i)
Sortie
Doing important work. i = 0 Doing important work. i = 1 Doing important work. i = 2 Doing important work. i = 3 Doing important work. i = 4
3) Boucle while
i = 0
while i < 10:
print(i, end=" ")
i += 1 # incrémenter i de 1
Sortie
0 1 2 3 4 5 6 7 8 9
4) Comprehensions de listes
Les comprehensions de listes sont l'une des fonctionnalités les plus appréciées et uniques de Python. Le moyen le plus simple de les comprendre est probablement de regarder quelques exemples :
squares = [n**2 for n in range(10)]
print(squares)
Sortie
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Sans compréhension, on écrirait :
squares = []
for n in range(10):
squares.append(n**2)
print(squares)
Sortie
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Avec un filtre :
planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
short_planets = [planet for planet in planets if len(planet) < 6]
print(short_planets)
Sortie
['Venus', 'Earth', 'Mars']
Filtrer et transformer :
# str.upper() met en majuscules
loud_short_planets = [planet.upper() + "!" for planet in planets if len(planet) < 6]
print(loud_short_planets)
Sortie
['VENUS!', 'EARTH!', 'MARS!']
Même structure, mais sur plusieurs lignes (parfois plus lisible) :
[
planet.upper() + "!"
for planet in planets
if len(planet) < 6
]
Sortie
['VENUS!', 'EARTH!', 'MARS!']
L’expression de gauche peut ne pas utiliser la variable (peu courant, mais possible) :
[32 for planet in planets]
Sortie
[32, 32, 32, 32, 32, 32, 32, 32]
5) Exercice guidé : compter les négatifs
Version “classique” :
def count_negatives(nums):
"""Return the number of negative numbers in the given list.
>>> count_negatives([5, -1, -2, 0, 3])
2
"""
n_negative = 0
for num in nums:
if num < 0:
n_negative = n_negative + 1
return n_negative
Version avec compréhension :
def count_negatives(nums):
return len([num for num in nums if num < 0])
Version “minimale” (exploitant True/False comme 1/0) :
def count_negatives(nums):
# Rappel : True/False se comportent comme 1/0 dans sum()
return sum([num < 0 for num in nums])
🚀 Conclusion
Vous savez maintenant :
- parcourir des séquences avec for et range(),
- contrôler des boucles avec while,
- et écrire des compréhensions de listes expressives (avec filtre et transformation).