Cours avancé de développement Python
Chapitre
>
Niveau
Listes Avancées
Compréhensions de liste
Dans ce chapitre, nous allons explorer de nouvelles façons d'utiliser les listes en Python, en ce qui concerne l'optimisation, la compartimentation et même la création de grandes listes multidimensionnelles, comme des matrices qui ressemblent de près à des tableaux.
Pour ce niveau, nous allons travailler avec les compréhensions de listes, qui sont des listes pouvant être créées à partir d'autres listes en ne sélectionnant que certains éléments. Cela se fait également en une simple ligne de code, sans avoir besoin d'entrer manuellement une liste ou de proposer des automatisations complexes.

Objectif
Récupère et trie tous les légumes-racines dans le garde-manger afin de les ranger à leur place correcte en utilisant des compréhensions de liste.
Le garde-manger contient plusieurs sacs remplis de légumes-racines qui doivent être triés, à savoir : potatoes, onions et garlic. Il est probable que certains légumes soient abîmés. Retire les légumes bons et range-les dans les caisses qui leur sont destinées.
Pour ce faire, tu dois identifier quels éléments se trouvent dans chaque sac. Il y a trois (3) constantes de listes qui contiennent les informations de chacun des sacs, nommées : left_sack, middle_sack, right_sack. Ces constantes de listes correspondent aux sacs sur le terrain aux emplacements indiqués par leurs noms.
Rends-toi aux marques en X lumineuses devant chaque sac et utilise la fonction speak() pour identifier le contenu de chaque sac en utilisant les constantes, par exemple : player.speak(left_sack). Une fois que tu as identifié le contenu de chaque sac, repère les éléments à retirer, comme les légumes comportant : "Bad", "Spoiled" ou "Rotten" dans leur nom.
Tu dois créer de nouvelles listes qui ne contiennent que les éléments bons à la consommation. Tu pourrais le faire manuellement, mais cela prendrait du temps et pourrait devenir assez confus. Pour y parvenir plus efficacement, tu peux créer une liste à partir d'une autre liste, ce qui s'appelle une compréhension de liste.
À partir des trois (3) constantes de liste : left_sack, middle_sack, right_sack, crée trois nouvelles listes nommées : potatoes, onions et garlic qui ne contiennent pas les éléments indésirables des sacs. Les compréhensions de liste te permettent de créer de nouvelles listes sans écrire une masse de code, par exemple:
# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]
Dans l'exemple ci-dessus, la liste nommée potatoes est créée à partir de la liste nommée sack, ne contenant que ["Potatoes", "Sweet Potatoes"] et excluant "Spoiled Potatoes". Ceci est réalisé en créant une boucle for autonome, en utilisant dans ce cas x comme indice pour parcourir la liste et les instructions for / in pour identifier et exclure l'élément indésirable, c'est-à-dire toute chaîne de caractères contenant le mot "Spoiled".
Pour résumer, détermine si les constantes de liste contiennent le mot "Bad", "Spoiled" ou "Rotten" en utilisant la fonction speak(), crée les listes potatoes, onions et garlic en utilisant des compréhensions de liste afin de retirer les éléments indésirables que tu as trouvés dans chaque liste.
Une fois ces listes créées, rends-toi devant chacune des trois (3) marques X dorées situées devant les caisses portant les panneaux de légumes, et place les listes, en utilisant la fonction place(), dans les caisses correspondantes afin de terminer le niveau. Les emplacements sont indiqués par les panneaux, à savoir onions sur la caisse de gauche, potatoes dans la caisse du milieu et garlic sur la caisse de gauche.