Fortgeschrittener Python-Entwicklungskurs
Kapitel
>
Stufe
Erweiterte Listen
Listenkomprehensionen
In diesem Kapitel werden wir neue Möglichkeiten zur Verwendung von Listen in Python erkunden, insbesondere in Bezug auf Optimierung, Aufteilung in Teilbereiche und sogar das Erstellen großer mehrdimensionaler Listen wie Matrizen, die Tabellen sehr ähnlich sind.
Für dieses Level werden wir mit List Comprehensions arbeiten. Dabei handelt es sich um Listen, die aus anderen Listen erstellt werden, indem nur bestimmte Elemente ausgewählt werden. Dies geschieht ebenfalls in einer sehr einfachen einzeiligen Code-Anweisung, ohne dass manuell eine Liste eingegeben oder komplexe Abläufe entwickelt werden müssen.

Ziel
Sammle und sortiere alle Wurzelgemüse in der Speisekammer, damit du sie mithilfe von List Comprehensions an ihrem richtigen Platz verstauen kannst.
Die Speisekammer enthält mehrere Säcke voll mit Wurzelgemüse, die sortiert werden müssen. Dabei handelt es sich um: potatoes, onions und garlic. Wahrscheinlich befinden sich auch Gemüse darin, das verdorben ist. Nimm das Gemüse heraus, das in Ordnung ist, und lagere es in die entsprechenden Kisten.
Um dies zu erreichen, musst du feststellen, welche Items sich in jedem Sack befinden. Es gibt drei (3) Listenkonstanten, die die Informationen für jeden der Säcke enthalten, und zwar: left_sack, middle_sack, right_sack. Diese Listenkonstanten entsprechen den Säcken an den im Namen angegebenen Positionen.
Gehe zu den leuchtenden X-Markierungen vor jedem Sack und benutze die Funktion speak(), um den Inhalt jedes Sacks mithilfe der Konstanten zu identifizieren, zum Beispiel: player.speak(left_sack). Sobald du den Inhalt jedes Sacks identifiziert hast, suche nach Items, die entfernt werden müssen, zum Beispiel Gemüse, das in ihrem Namen die Wörter "Bad", "Spoiled" oder "Rotten" enthält.
Du musst neue Listen erstellen, die nur Items enthalten, die zum Verzehr geeignet sind. Das könntest du manuell machen, aber das würde eine Weile dauern und ziemlich verwirrend werden. Um dies effizienter zu gestalten, kannst du aus einer Liste eine neue Liste erstellen. Dies ist als List Comprehension bekannt.
Aus den drei (3) Listenkonstanten: left_sack, middle_sack, right_sack erstellst du drei neue Listen mit den Namen: potatoes, onions und garlic, die keine unerwünschten Elemente enthalten. List Comprehensions ermöglichen dir, neue Listen zu erstellen, ohne viel Code schreiben zu müssen, zum Beispiel:
# Originale Liste sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # Dies erstellt eine Liste namens potatoes mit: # ["Potatoes", "Sweet Potatoes"]
Im obigen Beispiel wird die Liste namens potatoes aus der Liste sack erstellt, die nur ["Potatoes", "Sweet Potatoes"] enthält und "Spoiled Potatoes" ausschließt. Dies wird erreicht, indem eine in sich geschlossene for-Schleife erstellt wird, in diesem Fall unter Verwendung von x als Index, um durch die Liste zu gehen, und for / in-Anweisungen, um das unerwünschte Element, also jeden String, der das Wort "Spoiled" enthält, zu identifizieren und auszuschließen.
Zur Wiederholung: Stelle fest, ob die Listenkonstanten das Wort "Bad", "Spoiled" oder "Rotten" enthalten, indem du die Funktion speak() verwendest, und erstelle die Listen potatoes, onions und garlic mithilfe von List Comprehensions, wobei du die unerwünschten Elemente, die du in jeder Liste gefunden hast, entfernst.
Sobald diese Listen erstellt sind, gehe zu jedem der drei (3) goldenen X-Markierungen vor den Kisten mit den Gemüseschildern und platziere die Listen mithilfe der Funktion place() in den entsprechenden Kisten, um das Level abzuschließen. Die Positionen sind durch die Schilder angegeben, und zwar befinden sich onions in der linken Kiste, potatoes in der mittleren Kiste und garlic in der linken Kiste.