Dans cette leçon vidéo, le présentateur explique les listes à deux dimensions en Python, c’est‑à‑dire les listes imbriquées. Après un rappel rapide sur les listes simples (indices, types d’éléments), il montre comment une liste contenant une autre liste constitue une structure à deux dimensions et comment y accéder avec deux paires de crochets (ex. lst[2][0] pour obtenir « A »). Il aborde la possibilité d’étendre à trois dimensions ou plus, tout en soulignant que, dans la pratique, on utilise surtout des listes à une ou deux dimensions, souvent pour représenter des matrices ou des grilles. Le cours décrit la traversée de ces structures à l’aide de boucles for imbriquées, ainsi que les techniques d’affichage avec le paramètre `end` de `print` (tabulation ou saut de ligne) pour aligner les sorties. Un exemple complet montre comment créer dynamiquement une table de multiplication de 0 à 10 : initialisation d’une liste vide, boucle externe sur les lignes (i), création d’une sous‑liste « ligne », boucle interne sur les colonnes (j) pour calculer ij et l’ajouter à la sous‑liste, puis ajout de la sous‑liste à la liste principale. Enfin, il rappelle que d’autres structures ordonnées (tuples, dictionnaires) peuvent aussi être imbriquées, mais que les listes restent les plus courantes. La vidéo se conclut par une invitation à consulter d’autres cours liés aux tableaux à deux dimensions.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon sur le langage de programmation Python. Aujourd'hui, nous allons voir les listes à 2 dimensions. Cette leçon constitue la suite de la vidéo où nous avons vu les listes, donc si vous ne savez pas comment les manipuler, je vous recommande vivement de voir cette vidéo-là en premier. Nous avons vu qu'une liste est une séquence qui contient plusieurs éléments accessibles via des indices. Ces indices sont des valeurs numériques que l'on place entre crochets afin de spécifier la position de l'élément auquel on souhaite avoir accès. Nous avons vu que ces éléments-là peuvent être de types différents, que ce soit des types de base comme les entiers ou les booléens, ou encore des types construits comme les tuples ou les dictionnaires. S'il se trouve qu'un élément de la liste soit aussi une liste, alors on parle de listes imbriquées, autrement dit des listes à 2 dimensions. Supposons que l'on dispose de la liste identifiée par lst et qui renferme l'entier 10, la chaîne de caractères Salut et une autre liste qui contient les valeurs A, B et C. Puisque la liste lst contient une liste parmi ses éléments, alors il s'agit d'une liste à 2 dimensions. En effet, si on veut accéder aux valeurs 10 et Salut, nous avons besoin de spécifier un seul indice et qui prend respectivement les valeurs 0 et 1. Si on spécifie l'indice 2, alors on récupère la liste qui contient les valeurs A, B et C. Nous allons désigner cette dernière par liste secondaire. Mais si on veut accéder à la lettre A seulement, alors il faut spécifier son indice dans la liste secondaire, c'est-à-dire 0. Donc on imagine que cette fois nous aurons 2 crochets pour la liste lst. Le premier contient l'indice 2 pour indiquer le 3e élément qui est une liste, et le deuxième contient l'indice 0 qui indique la position de la lettre A au sein de la liste secondaire. Donc le fait de parler d'une liste à 2 dimensions sous-entend systématiquement qu'on aura besoin de 2 crochets pour accéder à un élément. Si on veut accéder à la lettre B alors on fait lst et pour avoir accès à la lettre C on met lst . Vous avez sûrement compris que l'on peut aussi avoir une liste à 3 dimensions. Pour cela, il suffit que l'un des éléments de la liste secondaire soit encore une liste. Donc, en théorie, il n'y a pas de limite pour les imbrications, c'est-à-dire on peut placer les listes les unes dans les autres autant de fois que l'on souhaite. Cependant, dans la pratique, on a souvent besoin de listes à une dimension ou à deux dimensions. Dans l'exemple précédent, vous avez remarqué que l'on parle de liste à deux dimensions seulement si on a affaire à l'indice 2 de la liste. Néanmoins, il est courant que tous les éléments de la liste à deux dimensions soient des listes comme ceci. Pour info, nous ne sommes pas obligés de mettre le même nombre d'éléments dans chacune des listes secondaires. Donc, rien ne nous empêche de mettre 2 éléments dans la deuxième liste et 4 dans la troisième. Cependant, il est courant que les listes secondaires aient la même longueur. D'ailleurs, on utilise souvent les listes à 2 dimensions pour représenter une matrice, une grille ou un tableau qui contient des lignes et des colonnes. Pour en savoir plus, je vous renvoie vers mon cours d'algorithmique où j'ai traité les tableaux à 2 dimensions. On peut parcourir la liste lst à l'aide d'une boucle comme ceci: La variable de la boucle i est elle-même une liste, donc on peut la parcourir aussi à l'aide d'une autre boucle. On aura donc 2 boucles imbriquées comme on l'a vu dans la leçon consacrée à la boucle For. Si vous voulez afficher les éléments de chacune des listes secondaires sur une seule ligne, alors on va juste invoquer le mot-clé end de la fonction Print en spécifiant une valeur de notre choix. Cette fois, je vais opter pour une tabulation. Et si on veut que les éléments de chaque liste soient placés dans une ligne à part, alors il suffit d'indiquer un saut de ligne dans la boucle i comme ceci. Sinon, on peut carrément supprimer la chaîne anti-slash n car la fonction print applique un saut de ligne par défaut. Imaginez que l'on veut créer une liste à 2 dimensions progressivement à l'aide de boucles. Disons par exemple que l'on veut créer une table de multiplication qui a cette forme. Le croisement d'une ligne et d'une colonne donne le résultat de la multiplication. Par exemple, la ligne 2 et la colonne 3 donnent 2× 3, donc 6. Pour simplifier, nous allons juste afficher le résultat des multiplications et non pas les opérandes qui constituent les clés des lignes et des colonnes. Nous commençons par initialiser une liste vide identifiée par lst. Cette liste aura 2 dimensions et elle contiendra toutes les multiplications possibles de nombres situés entre 0 et 10. Ensuite, nous allons exprimer une boucle et qui utilisera le compteur i. Cette boucle fera le parcours de 0 à 10. Pour chaque itération de cette boucle, nous allons initialiser une autre liste identifiée par ligne. Cette liste représente une ligne ou une rangée de notre grille qui n'est rien d'autre que la table de multiplication du nombre i courant, donc i fois 0, i fois 1, i fois 2, etc. Pour cela, nous allons exprimer une deuxième boucle imbriquée qui utilise cette fois le compteur j et qui fait aussi le parcours de 0 à 10. Pour chaque itération de cette boucle, on calcule la multiplication de i par j que l'on ajoute à la liste identifiée par ligne. Une fois la boucle j prend fin, on ajoute la liste ligne résultante à notre liste lst. Remarquez l'indentation qui est au même niveau que la boucle For imbriquée. À la fin de l'exécution de la boucle principale, on aura créé la liste lst qui contient toutes les multiplications voulues que l'on va juste afficher comme ceci. Pour afficher chaque rangée de la table dans une ligne à part, on va simplement parcourir la liste lst avec une boucle comme ceci. Vous remarquez que l'affichage n'est pas aligné et c'est normal, car il y a des nombres qui contiennent un seul chiffre et d'autres en contiennent 2 voire 3. Nous allons donc procéder aux boucles imbriquées exactement comme on l'a fait pour la liste qui contient les lettres de l'alphabet. Le fait de spécifier la tabulation en guise de valeur du mot-clé End fait en sorte d'aligner l'affichage. Donc la première ligne contient la table de multiplication de 0. La deuxième contient celles de 1, et ainsi de suite jusqu'à la 10e ligne. Notez qu'il n'y a pas que les listes que l'on peut spécifier sur 2 dimensions ou plus, mais toutes les structures ordonnées peuvent être imbriquées, comme les tuples ou les dictionnaires, sauf que dans la pratique les listes à 2 dimensions sont les structures imbriquées les plus utilisées. Merci pour votre attention et à la vidéo prochaine.