Créer des tableaux de manière astucieuse (compréhensions)

icône de pdf
Signaler
Cette leçon t’enseigne comment utiliser les compréhensions en Python pour créer et transformer rapidement des tableaux et des dictionnaires. Tu découvriras leur syntaxe de base, leur usage avec des conditions ou des boucles imbriquées, leur application à des structures complexes comme les matrices ou les fichiers, ainsi que leur extension aux dictionnaires. Mots-clés : Python, compréhension, liste, dictionnaire, matrice, NSI.

Introduction

Créer des tableaux de manière efficace est une compétence essentielle en informatique. Python permet d’y parvenir grâce aux compréhensions, une syntaxe concise qui permet de générer, transformer ou filtrer des tableaux en une seule ligne. Cette méthode s’avère particulièrement utile pour le traitement de données, la transformation de structures complexes ou encore la création de matrices. En apprenant à manier les compréhensions, on développe une pensée algorithmique rigoureuse et on gagne en clarté dans l’écriture des programmes.

Comprendre la compréhension de liste

La compréhension de liste est une manière condensée de créer une nouvelle liste à partir d’une expression appliquée à chaque élément d’un itérable. Cette syntaxe évite d’écrire une boucle classique et rend le code plus direct.

Forme de base :
nouvelle_liste = [expression for élément in itérable]

Avec condition :
nouvelle_liste = [expression for élément in itérable if condition]

Exemples :
Créer un tableau contenant les carrés des entiers de 0 à 9 :
carres = [x**2 for x in range(10)]

Extraire les entiers pairs de 0 à 19 :
pairs = [x for x in range(20) if x % 2 == 0]

Transformer les mots d’une phrase en majuscules :
mots = "le code python est simple".split()
majuscules = [mot.upper() for mot in mots]

Ces formes simples couvrent déjà de nombreux usages courants en traitement de données ou en affichage.

À retenir

La compréhension de liste permet de générer un tableau en appliquant une transformation à chaque élément, avec une éventuelle condition de filtrage. Elle remplace avantageusement les boucles classiques.

Aller plus loin : conditions et compréhensions imbriquées

Les compréhensions ne se limitent pas à une transformation directe. On peut y intégrer des conditions if/else ou imbriquer plusieurs boucles pour parcourir des structures plus complexes.

Exemple avec condition if/else :
Remplacer les entiers pairs par leur double, et les impairs par zéro :
nombres = [1, 2, 3, 4]
résultat = [x*2 if x % 2 == 0 else 0 for x in nombres]
Résultat : [0, 4, 0, 8]

Exemple avec double boucle pour créer une table de multiplication :
produits = [(i, j, i*j) for i in range(1, 4) for j in range(1, 4)]

Cet exemple génère un tableau contenant tous les produits possibles de deux entiers entre 1 et 3. Il illustre aussi la création de matrices.

Lien explicite avec les matrices :
Une matrice peut être représentée comme un tableau de tableaux, c’est-à-dire une liste dont chaque élément est lui-même une liste. Exemple :
matrice = [[i*j for j in range(1, 6)] for i in range(1, 6)]

À retenir

Les compréhensions peuvent inclure plusieurs niveaux de boucles ou des conditions complexes. Elles permettent de modéliser des structures comme les matrices et de transformer des données de manière expressive.

Appliquer les compréhensions aux structures complexes

La compréhension de liste est particulièrement utile lorsqu’il s’agit de manipuler des structures de données plus complexes, comme des fichiers, des dictionnaires ou des listes de listes.

Aplatir une matrice :
matrice = [[1, 2], [3, 4], [5, 6]]
aplatie = [x for ligne in matrice for x in ligne]
Résultat : [1, 2, 3, 4, 5, 6]

Extraire des champs spécifiques d’un tableau de dictionnaires :
personnes = [{"prenom": "Alice"}, {"prenom": "Bob"}, {"prenom": "Chloé"}]
prenoms = [personne["prenom"] for personne in personnes]

Exemple avec un fichier CSV (traitement de données réel) :
Soit un fichier eleves.csv contenant :

nom,prenom,note
Dupont,Alice,15
Martin,Bob,12
Durand,Chloé,17

Chargement et extraction des prénoms avec une compréhension :

with open("eleves.csv") as f:
    lignes = f.readlines()[1:]  # On saute l’en-tête
    prenoms = [ligne.strip().split(",")[1] for ligne in lignes]

On récupère ainsi rapidement les prénoms de tous les élèves du fichier, sans boucle explicite.

À retenir

Les compréhensions permettent de manipuler facilement des structures complexes comme des dictionnaires, des matrices ou des fichiers. Elles facilitent le traitement de données structurées issues du monde réel.

La compréhension de dictionnaire

Moins connue, la compréhension de dictionnaire suit le même principe mais construit des paires clé : valeur. Elle s’avère précieuse lorsqu’on souhaite transformer une table de correspondances ou indexer des données.

Syntaxe générale :
dico = {clé: valeur for élément in itérable}

Exemple : créer un dictionnaire qui associe à chaque entier son carré :
carres = {x: x**2 for x in range(5)}
Résultat : {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Exemple avec condition :
nombres_pairs = {x: x**2 for x in range(10) if x % 2 == 0}

Les compréhensions de dictionnaire sont utiles pour restructurer des données ou effectuer des recherches rapides par clé.

À retenir

Comme les listes, les dictionnaires peuvent être construits de façon concise grâce aux compréhensions. Cette méthode permet de créer des structures associatives dynamiques à partir de données existantes.

Conclusion

La compréhension de liste est une technique puissante qui permet de créer rapidement des tableaux en Python. Elle favorise une écriture concise, expressive et souvent plus performante. En allant au-delà des cas simples, on peut transformer des structures complexes, manipuler des fichiers, modéliser des matrices et même générer des dictionnaires. Ces compétences sont essentielles pour gagner en autonomie dans l’analyse et le traitement des données, et constituent une base solide pour aborder des notions plus avancées en Terminale.