Python : Les structures de données

Modifier les listes

Testez gratuitement nos 1271 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Votre formateur vous explique ici comment modifier le contenu d'une liste, qui est en réalité une collection modifiable.
08:06

Transcription

Concentrons-nous maintenant sur la modification de ces listes. On a déjà modifié, vous allez me dire. On a fait des appends ou des extends. Oui, mais on a ajouté. Là, on aimerait pouvoir modifier à l'intérieur de la liste. Entre parenthèses, ça va nous permettre de traiter nos listes comme des structures de données traditionnelles ou des stacks ou des queues, des choses qui vont pouvoir être manipulées au début, à la fin avec les termes que vous connaissez sans doute. On va les nommer ici. LIFO et FIFO. LIFO, ça veut dire, last in first out, c'est-à-dire, le dernier entré est le premier sorti, c'est comme un stack, un pile d'assiettes : vous posez des assiettes toujours vers le haut et quand vous en retirez une, pour faire la vaisselle, par exemple et bien vous retirez la dernière assiette que vous avez posée sur la pile. C'est donc, une pile, un stack, un LIFO. Et un FIFO, plutôt une queue, first in first out. Lorsque vous faites la queue à la poste par exemple, et bien, c'est le premier arrivé qui normalement, est le premier servi, normalement. Donc, c'est un FIFO. Le first in, le premier arrivé est le premier à sortir de la queue. On traite très, très bien ces structures de données à l'aide d'une liste. Mais pour cela, il faut faire des insertions à un endroit spécifique. Alors ici, je voudrais par exemple, ajouter maintenant le canton de Neuchâtel dans mes départements. Je vais avoir une méthode qui s'appelle insert pour insérer. C'est assez compréhensible. Alors, vous voyez, on demande i pour l'index et x pour la valeur. Alors, je n'ai pas vraiment besoin d'insérer à la fin, mais je peux très bien indiquer la longueur de ma liste pour ajouter au début index 0, bien sûr et puis, je vais mettre Neuchâtel. Pour ce qui est d'enlever, facile ! Quelque chose également de très traditionnel dans les langages de programmation : le pop. Et vous voyez que le pop peut prendre un index. Donc si je fais un pop sans index, je suis à la fin. Donc, je suis dans une structure de queue, en FIFO. Il faut bien entendu, que je récupère ma valeur. Ici, je vais simplement faire un print du résultat. Donc, on est d'accord, on a trois prints. Un premier, d'ailleurs celui-là je peux l'enlever, il ne sert à rien. Je vais ajouter Genève au l Valais, mettre Neuchâtel au début, ensuite faire un pop et regarder le résultat. Donc, normalement, je devrais avoir Neuchâtel au début. C'est vrai que mon print peut être ici, avant et après. Voilà. Et on regarde ce que ça nous donne. J'ai toujours Neuchâtel au début mais à la fin, j'ai enlevé Valais. Oui, parce que j'ai fait un pop sans index. Donc, j'avais le Valais et je l'ai enlevé, je l'ai récupéré ici pour l'afficher. Donc, j'ai vraiment un comportement de queue : j'ajoute des choses et puis avec le pop, je les enlève les unes après les autres en récupérant la valeur pour pouvoir la traiter. Si je fais un pop position 0 et bien, je fais la même chose mais au début. J'ai un comportement de type LIFO. Et donc, j'ai ajouté Neuchâtel, je l'enlève et je ne l'ai plus. CQFD Bien entendu, je peux utiliser mon insert avec autre chose que 0, mon pop avec autre chose que 0 vide, bien entendu. Et je peux insérer Neuchâtel à la position nº2. Le voici. Est-ce que je peux faire la même chose pour plusieurs valeurs ? Donc, si je commente ceci et je veux faire un insert de Neuchâtel et le Jura. Comment est-ce que ça va réagir ? Vous vous en doutez, sans doute. On a compris qu'insert prenait une valeur, donc on va se retrouver exactement dans le même cas qu'avec notre append. On a inséré un deuxième niveau, une liste dans une liste. Et c'est pas ce qu'on voulait. Est-ce qu'on a un moyen de faire autrement ? C'est-à-dire, je voudrais ajouter en une seule fois ceci. Et bien là, on va basculer vers autre chose que l'utilisation de méthode de la liste. Je vais commenter ceci après l'avoir copié. Et puis, on va partir sur une autre stratégie. Cette fois-ci, au lieu de faire l'insert, on va concaténer notre liste avec les départements. C'est-à-dire, si je fais ceci. Et bien, mon opérateur plus travaille très, très bien avec les listes. Je vais avoir une liste à gauche, une liste à droite et donc , je fais une concaténation tout simplement des deux listes. Donc, il y a un traitement spécifique de la liste qui est très intelligent sur les opérateurs traditionnels. Ici, ce que j'ai fait, j'ai pris un résultat que j'ai réaffecté complètement à la liste mais je peux bien entendu utiliser l'opérateur qui fait la concaténation et l'affectation en même temps, comme ceci, pour obtenir bien sûr le même résultat. Et bien sûr, il va sans dire que si je veux mettre C2 canton au début, je vais rebasculer sur cette stratégie. Et comme ceci. Donc ça, c'est une absolue évidence mais tout est possible. Finalement, un tout petit peu plus subtil, réfléchissez une seconde. Je vous pose la question. Maintenant, j'aimerais ajouter Neuchâtel et le Jura par exemple, entre l'Aisne et l'Allier. Comment est-ce qu'on va faire ? Alors, on a vu qu'on avait un insert avec une position mais qu'il refusait de travailler avec nos listes. Il faut un élément. Alors, on pourrait l'ajouter en deux fois, bien entendu. Mais ici, ce n'est pas ce qu'on veut faire. On veut ajouter. Alors, je vous reprend ça. Je veux avoir ceci et puis, l'affecter quelque part à une position qui est ici pour dire, "et bien, tu me l'insères à cet endroit-là." Je ne peux pas faire ça. Je ne peux pas faire ça non plus, d'ailleurs. Parce que si je fais ceci, vous vous imaginez bien que là, je suis en train de référencer un élément et donc, je place un tableau à cet endroit. Ici, 2 c'est la deuxième position. Donc, je n'aurais plus ça puisque je ne l'ai pas ajouté mais ce serait 0, 1 , 2. Donc, je remplace l'Allier par Neuchâtel et Jura, voyez ce que je veux dire. Ça devient ceci. Ce n'est pas ce que je veux. Je veux entre ça et l'Allier qui ne serait pas touché, ajouter ces deux éléments. Une petite idée ? Allez, je vous le donne en mille. Je veux être en position 2 et ceci référence à un élément mais qu'est-ce qui permet de référencer une position sous forme de tableau et qui est vide ? Et ça on l'a vu quand on a parlé de l'opérateur de slicing. D'ailleurs, je l'ai fait en anglais à ce moment là, excusez-moi, slicing, découpage, enfin tranche. On a un opérateur qui reprend des tranches. Or, ce que je veux, c'est une tranche vide. Mais vous vous souvenez, c'est possible de faire ça. Je peux faire ça. Ça, ça me donne une tranche vide, vous vous souvenez ? Parce que la tranche, le slice, commence à ceci et se termine à ceci, non compris. Ici, ce que je décris, c'est une tranche qui n'existe pas ou disons, une position. Enfin bon, vous allez voir, je vous montre. Voilà, n Neuchâtel, Jura et l'Allier. Parce que ici, je ne définis qu'un endroit spécifique. Mais là, je réagis vraiment en forme de listes et non pas d'un seul élément puisque mon slicing me retourne une liste. Et bien, je dis, "à cette position-là, je voudrais que tu m'insères ceci." Comme ici on attend vraiment une liste et bien, on positionne la liste et on l'insère au premier niveau à l'intérieur de la liste existante.

Python : Les structures de données

Maîtrisez les ressources du langage de programmation Python. Abordez en détail les structures de données natives telles que les listes, les tuples et les dictionnaires.

2h07 (23 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :30 août 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !