Mon Labo Python

Comment utiliser les listes Python pour organiser ses données de débutant

Listes Python pour organiser des données de débutant : script affiché sur un vieux laptop à la table de cuisine

Dix. C'est le nombre de variables que j'avais fini par empiler dans un même script, un soir où je voulais juste transformer ma liste de courses en quelques lignes de code avant d'aller au supermarché du quartier. Article1, article2, article3, et ainsi de suite jusqu'à article10. À la fin, je ne savais plus laquelle contenait les pommes et laquelle contenait le pain. Apprendre Python en autodidacte, après une journée de bureau, commence souvent par un problème de rangement aussi bête que celui-là. C'est ce soir-là que les listes Python sont entrées dans ma vie de débutante, et honnêtement, rien n'a plus été pareil depuis.

Avant d'aller plus loin, une précision qui compte : ce carnet contient quelques liens affiliés, et je préfère le dire tout de suite plutôt que de le glisser en petit à la fin. Si vous passez par l'un d'eux pour vous inscrire à une formation, une commission peut m'être versée, sans que cela change quoi que ce soit au prix que vous payez. Je ne parle ici que des ressources qui ont vraiment occupé mes soirées, pas de choses testées en diagonale pour l'occasion.

Un seul panier pour remplacer dix variables

Le déclic est venu du chapitre sur les listes dans la Formation au langage Python [Mon point de départ], celle que je suis depuis mes débuts. Un seul panier, capable de contenir tous mes articles à la fois, plutôt que dix variables déclarées une par une, chacune avec son propre nom à retenir. En Python, ce panier se reconnaît à ses crochets, comme ceci : []. Ça paraît minuscule dit comme ça, mais ça a changé la façon dont je pense mes scripts — je ne stocke plus des informations une par une, je les range ensemble et je vais les chercher quand j'en ai besoin.

J'ai bien été tentée, un soir de doute, d'aller voir du côté de la formation JavaScript, en me disant que changer de langage réglerait peut-être mes problèmes de rangement plus vite. Finalement j'ai laissé tomber l'idée et je suis restée sur mes listes : mieux valait finir ce que j'avais commencé que recommencer ailleurs.

Liste de courses manuscrite posée à côté d'un clavier, point de départ pour apprendre les listes Python

Pourquoi l'ordinateur commence à compter à zéro ?

Vers la mi-février, ma liste ressemblait enfin à quelque chose : courses = ['carottes', 'chocolat', 'lait']. Je voulais afficher le premier élément, les carottes, alors j'ai naturellement demandé l'élément numéro 1. Python m'a répondu chocolat. J'ai fixé l'écran un bon moment, l'anse de ma tasse passant du brûlant au tiède sous mes doigts sans que je m'en rende vraiment compte.

La règle, une fois qu'on l'a comprise, est simple : en Python, le premier index d'une liste est 0, pas 1. C'est comme si on vivait au rez-de-chaussée et que, pour l'ordinateur, c'était déjà l'étage zéro. Demander liste[3] pour un panier qui ne contient que trois éléments fait apparaître en rouge IndexError: list index out of range — un message qui a l'air sévère la première fois, et qui veut simplement dire qu'on cherche une place qui n'existe pas dans son propre panier.

Vers la sixième semaine, quelque chose a changé sans que je sache exactement pourquoi : un message d'erreur m'a semblé presque poli, et j'ai su tout de suite dans quelle direction chercher au lieu de paniquer devant le rouge. Comprendre ce que raconte un message d'erreur, indépendamment du sujet précis, c'est presque une compétence à part entière — celle-là mérite un carnet à elle toute seule un de ces jours.

Cette histoire de compter à partir de zéro m'a rappelé une autre étape qui avait fait pareil sur le moment : la première fois où j'ai dû installer Python sur Windows, tout semblait insurmontable, et la fois suivante, je me suis demandé pourquoi j'avais autant stressé.

Message d'erreur Python affiché à l'écran, moment de frustration typique d'une débutante en autoformation

Ajouter un élément à ma liste Python sans tout renverser

Avant de comprendre comment ajouter proprement un élément à une liste, j'étais passée par une phase moins glorieuse : copier-coller du code trouvé en ligne sans vraiment chercher à comprendre chaque ligne, une astuce que Valérian, mon collègue de bureau, m'avait soufflée en passant. Ça a marché deux fois, puis planté à la troisième sans que je sache où regarder, puisque je n'avais jamais vraiment lu ce que ce code faisait. J'ai laissé tomber cette méthode et je suis revenue à quelque chose de plus lent, mais où je comprends chaque instruction que je tape.

La méthode .append() a été ma petite victoire du mois suivant. Imaginez être à la caisse et réaliser que les chewing-gums manquent encore au panier : avec .append(), on rajoute exactement un élément à la fin de la liste, sans rien renverser du reste. Je l'ai testée sur un petit script qui comptait mes heures de sommeil, une donnée ajoutée chaque matin — et quand j'ai appliqué len() sur la liste encore vide, le résultat affiché était 0, ce qui semble évident sur le papier mais m'a donné un sentiment de contrôle que je n'attendais pas.

Les listes Python acceptent aussi des types mélangés — du texte, des nombres, d'autres listes — un peu comme le tiroir de la cuisine où cohabitent piles, élastiques et vieux tickets de caisse sans qu'on y trouve à redire. Valérian, justement, m'a glissé un nouveau tableau Excel la semaine dernière, avec ce sourire un peu moqueur de quelqu'un qui doute que ça serve vraiment mais qui espère quand même secrètement que j'automatiserai la chose un jour. Je ne suis pas encore capable de manipuler des fichiers Excel avec Python comme il l'imagine, ni d'écrire mes propres fonctions plutôt que de recopier des blocs trouvés ailleurs, mais l'idée fait son chemin.

Tiroir de cuisine en désordre, image pour illustrer les types de données mélangés dans une liste Python

Mes petits paniers ont-ils une limite ?

Un commentaire de Théophane, un lecteur assidu qui écrit depuis Lyon, m'a récemment posé une question à laquelle je n'avais pas de réponse toute prête : que se passe-t-il quand une liste doit contenir des millions de lignes plutôt qu'une poignée de courses ? Je me suis renseignée, et la réponse tient en une phrase : les listes standard de Python finissent par saturer la mémoire et ralentir le programme, et ceux qui manipulent des jeux de données massifs passent alors à des outils plus costauds, construits autour de modules qu'il faut importer avant de pouvoir les utiliser, comme NumPy ou Pandas.

Pour l'instant, à ma table de cuisine, ces histoires de mémoire saturée restent théoriques : mes plus grosses listes contiennent une trentaine d'éléments, pas des millions. Le jour où je me lancerai dans quelque chose de plus ambitieux, il faudra sans doute revoir ma façon de ranger les données, mais ce jour n'est pas encore arrivé. Ce qui compte ce soir, c'est que ma boucle for a fini par afficher tous les éléments de ma liste dans le bon ordre, et que mes épaules se sont relâchées d'un coup en la voyant tourner sans planter. Si vous butez sur ce point précis, j'ai écrit un mot à part sur comment comprendre les boucles for et while, avec au passage deux lignes sur cette histoire d'indentation — ces espaces qui décident si une instruction appartient à la boucle ou pas, et qui m'ont fait perdre une soirée entière à moi aussi.

Soulagement après qu'une boucle for a enfin affiché les éléments d'une liste Python sans erreur

Il me reste tout un tas de zones grises pour les prochaines soirées : je n'ai pas touché aux dictionnaires, qui rangent les informations par clé plutôt que par position, ni vraiment appris à manipuler les chaînes de caractères sans me prendre les pieds dans les guillemets. Les fameux if et else attendront aussi leur tour, tout comme cette histoire de try et except pour empêcher un script de planter net, ou la fonction input() qui permettrait à mon programme de me poser une question en retour. Une chose à la fois.

Ce qui change quand les données sont enfin rangées

Ma table de cuisine n'a rien d'un bureau : le vieux portable est posé à même le formica, un cahier couvert de notes et de post-its traîne à côté du clavier, et le plafonnier au-dessus de ma tête éclaire surtout mon assiette du dîner que mon écran. Ce n'est pas glamour, mais c'est là que toutes ces soirées de listes ont eu lieu, une par une.

La vraie leçon de ces soirées listes, ce n'est pas la syntaxe des crochets ou la règle du zéro. C'est que ranger ses données correctement force à ranger sa pensée avant même d'écrire une ligne de code, et ça sert bien au-delà d'un script Python, jusque dans la façon dont j'organise mes propres to-do lists sur papier maintenant.

Si vous débutez aussi et que vous cherchez un fil à suivre pour ne pas lâcher au bout de deux semaines, la Formation au langage Python [Mon point de départ] reste ce qui m'a le mieux aidée à transformer mes erreurs rouges en petites victoires vertes. Les leçons sont assez courtes pour tenir dans une soirée de semaine, même fatiguée, même avec l'envie de fermer l'ordinateur avant la fin.

Demain, j'essaierai peut-être de comprendre comment retirer un élément d'une liste sans faire s'effondrer tout le reste. Ce soir, le thé est fini et l'écran se ferme. Partagez ce qui vous a fait le plus bugger dans vos propres listes.

Articles connexes