Apprendre Python - Compréhensions de liste

Dans cette leçon vidéo en français, l’instructeur présente la compréhension de liste, une syntaxe concise de Python pour créer des listes. Il commence par comparer la méthode traditionnelle (boucle + append) avec la forme compacte d’une compréhension, montre comment générer des séquences simples (1‑10, carrés, valeurs constantes) et comment exploiter d’autres itérables (tuple, set, dictionnaire, autre liste). Il introduit ensuite les filtres avec une clause if, puis les expressions conditionnelles if‑else imbriquées pour mapper les signes d’un nombre à des caractères (P, N, Z). Le cours poursuit avec les compréhensions imbriquées pour construire une table de multiplication à deux dimensions, explique la conversion des entiers en chaînes pour les afficher avec join et tabulation, et rappelle brièvement l’existence des compréhensions de dictionnaire. La vidéo se conclut sur les avantages de lisibilité et de concision de cette technique et invite à consulter d’autres leçons connexes.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon sur le langage de programmation Python. Aujourd'hui, nous allons voir la compréhension de liste. La compréhension de liste ou liste en compréhension est une technique qui permet de créer une liste de manière concise en utilisant les itérations. À titre d'exemple, imaginez que l'on souhaite créer une liste qui contient les valeurs de 1 à 10. La manière classique consiste à initialiser une liste vide, identifiée par lst par exemple, puis on la remplit au fur et à mesure à l'aide de la méthode append que l'on invoque dans une boucle qui s'exécute 10 fois. En utilisant la technique de compréhension de liste, on va tout simplement faire ceci: En effet, une seule instruction est suffisante pour créer notre liste. Cette instruction fonctionne comme ceci: La variable i qui figure juste après l'ouverture du crochet indique la valeur que l'on ajoutera à la liste à chaque itération. Cette valeur sera définie par la suite à l'aide de la boucle For qui utilise la même variable en tant que compteur. Donc, si Si on veut créer une liste qui contient non pas les entiers de 1 à 10, mais les carrés de ces entiers-là, alors on remplacera juste la variable i à ajouter à la liste par i² comme ceci. Et si on veut créer une liste qui contient 10 valeurs 0, avec la compréhension de liste on peut procéder de cette façon. Cela signifie que l'on ajoutera 0 à chaque itération de la boucle For définie juste après. Je rappelle que pour créer une liste qui contient une même valeur, comme la liste de 0, l'utilisation de l'opérateur de répétition constitue une solution plus simple comme on l'a vu avant. Bien entendu, on peut remplacer Range par Range car la valeur de l'intervalle Range n'est pas importante dans ce cas, et elle sert juste de compteur qui indique le nombre de fois que la valeur 0 doit figurer dans la liste. Donc, souvenez-vous que la variable ou expression exprimée juste après l'ouverture du crochet représente la valeur à ajouter à la liste à l'aide de la technique de compréhension. La compréhension de liste est d'autant plus sollicitée si on souhaite créer une liste à partir d'une autre séquence déjà définie, comme un tuple, un ensemble, un dictionnaire ou même une autre liste. À titre d'exemple, si on souhaite créer une liste à partir des valeurs d'une autre liste nommée lst_init et qui contient les valeurs 10, 20, 30 et 40, alors on fait ceci: Imaginez maintenant que la liste lst_init contient les chaînes de caractères comme ceci. Si on veut créer une liste qui contient les longueurs respectives des chaînes de caractères placées dans la liste lst_init, alors on procède ainsi: En effet, on calcule la longueur de l'élément courant de la liste lst_init représenté par la variable i à l'aide de la fonction len et on la place dans la liste lst. Il est possible d'appliquer des filtres aux valeurs ajoutées dans une liste avec la technique de compréhension en utilisant des conditions. À titre d'exemple, imaginez que l'on a initialisé la liste lst_init comme ceci: Vous avez remarqué que cette liste contient des valeurs positives et négatives. Si on veut créer une liste identifiée par lst à partir des éléments positifs seulement de la liste lst_init en utilisant la technique de compréhension, alors on peut faire ceci. Cette fois, nous avons ajouté une condition après la boucle. Cette condition est vérifiée si l'élément courant de la liste lstInit représenté par la variable i est positif. C'est uniquement à ce moment-là qu'il sera ajouté à la liste lst. À la fin, on obtient une liste qui contient seulement 3 éléments car il s'agit des éléments positifs qui figurent dans la liste initiale. Maintenant, imaginez que l'on souhaite placer dans la liste lst les caractères P ou N, selon le signe de l'élément courant de la liste. P désigne positif et N signifie négatif. Dans ce cas, on fera appeler le mot-clé IfElse comme ceci. Remarquez cette fois que l'on a placé le mot-clé If avant la boucle For, car on a aussi invoqué le mot-clé Else. Cette écriture signifie tout simplement que l'on ajoute le caractère P à la liste lst si l'élément courant de la liste lstInit représenté par la variable i est positif, Sinon, c'est-à-dire si l'élément courant de la liste lstInit est négatif, alors on ajoute le caractère N et non pas le caractère P. Ensuite, on spécifie la boucle For exactement comme avant. Ajoutons des 0 dans la liste initiale. Cette fois, on va aussi prévoir le caractère Z pour dire 0 ou nul. Donc, si la valeur courante de la liste initiale est positive, on ajoute P à la liste lst, si elle est négative, on ajoute N, et si elle est nulle on ajoute Z. L'expression de la liste en compréhension deviendra comme ceci: Vous avez sans doute remarqué l'imbrication des conditions. En effet, nous avons 3 cas à vérifier avec les conditions, alors un simple if-else ne peut vérifier que 2 cas. Pour vérifier le 3e cas, on ajoute une imbrication dans le bloc else et qui vérifie si i est égal à 0. Dans ce cas, le caractère Z sera ajouté. Sinon, c'est-à-dire si i n'est ni positif ni nul, ce qui sous-entend qu'il est forcément négatif, alors on ajoute le caractère N. Bien entendu, on peut retirer les parenthèses qui englobent le premier bloc else et on aura le même résultat, sauf que le code sera moins lisible, d'autant plus si on ajoute d'autres conditions, donc des imbrications de plus. Il est possible de créer des listes imbriquées à l'aide de la technique de compréhension. Pour cela, nous allons reprendre l'exemple de la table de multiplication que nous avons créée lors de la vidéo consacrée aux listes à 2 dimensions. Rappelons que l'objectif est de créer une table qui contient toutes les multiplications possibles entre 2 nombres compris entre 0 et 10 sous forme d'une liste à 2 dimensions. La première liste imbriquée renferme la table de multiplication de 0, la deuxième contient celle de 1, etc. Je vous recommande de voir la vidéo consacrée aux listes à 2 dimensions si ce n'est pas déjà fait. Afin de comprendre comment nous avons créé et affiché la table de multiplication en utilisant les boucles imbriquées. Pour créer notre liste identifiée par lst à l'aide de la compréhension, nous allons procéder ainsi: Nous allons commencer par créer des listes vides dans notre liste lst comme ceci. Nous avons utilisé le compteur identifié par i pour créer ces listes-là. Si on affiche lst, alors on obtient une liste qui contient 10 autres listes. Maintenant, il est temps de remplir ces 10 listes par le résultat de la multiplication de i par j. Notez que j sera le compteur de la boucle qui générera les éléments des 10 listes. Donc, pour chaque itération de i, 10 itérations de j seront exécutées, et à chaque fois on multiplie i par j et on place le résultat dans les listes imbriquées. Nous avons désormais notre table de multiplication à 2 dimensions. Nous allons juste l'afficher sous forme d'une grille dont les éléments sont alignés comme on l'a fait avant. Mais cette fois, je vais changer de méthode et j'utiliserai une seule boucle au lieu de 2, et j'afficherai les listes imbriquées d'un seul coup, en les transformant en chaînes de caractères à l'aide de la méthode join en utilisant le séparateur antislash t qui désigne une tabulation. Nous avons une petite erreur qui indique que l'on ne peut pas regrouper les entiers qui figurent dans la liste à l'aide de la méthode join. En effet, le résultat de multiplication de i par j génère des entiers. Nous allons donc transtyper ce résultat en chaîne de caractères pour éviter l'erreur. Nous avons désormais notre table de multiplication affichée comme prévu. J'imagine que vous avez perçu le potentiel de la technique de compréhension de liste. En effet, elle permet d'avoir un code plus concis et plus lisible, chose qui représente l'un des atouts du langage de programmation Python. À la fin, sachez que l'on peut également créer des dictionnaires à l'aide de la technique de compréhension, mais c'est une pratique peu courante. En revanche, ce sont les listes qui sont très souvent créées à l'aide de cette technique car les listes constituent les structures de données les plus populaires et largement utilisées. Merci pour votre attention et à la vidéo prochaine.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









