Avanceret Python Udviklingskursus
Kapitel
>
Niveau
Avancerede lister
Listeforståelser
I dette kapitel skal vi udforske nye måder at bruge lister i Python på med hensyn til optimering, opdeling og endda at lave store multi-dimensionelle lister som matrixer, der ligner tabeller.
For dette niveau vil vi arbejde med listeforståelser, dvs. lister der kan oprettes ud fra andre lister ved kun at vælge visse komponenter fra dem. Dette gøres også i en meget ligetil enkelt linje kode uden at skulle manuelt indtaste en liste eller finde på komplekse automatiseringer.

Mål
Hent og sorter alle rodgrøntsager i spisekammeret, så du kan opbevare dem på deres rigtige sted ved hjælp af list comprehensions.
Spisekammeret har flere sække fyldt med rodgrøntsager, der skal sorteres, disse er: potatoes, onions og garlic. Der er sandsynligvis grøntsager, der er blevet dårlige. Tag de grøntsager, der er gode, og opbevar dem i kasserne, hvor de hører hjemme.
For at opnå dette skal du identificere, hvilke elementer der er i hver sæk. Der er tre (3) listekonstanter, der indeholder oplysninger for hver af sækene, disse er navngivet: left_sack, middle_sack, right_sack. Disse listekonstanter svarer til sække på marken på de steder, som deres navne angiver.
Gå hen til de oplyste X-mærker foran hver sæk, og brug funktionen speak() for at identificere indholdet i hver sæk ved at anvende konstanterne, for eksempel: player.speak(left_sack). Når du har identificeret indholdet i hver sæk, skal du finde de elementer, der skal fjernes, såsom grøntsager med: "Bad", "Spoiled" eller "Rotten" i deres navn.
Du skal oprette nye lister, som kun indeholder elementer, der er egnet til konsum. Du kunne gøre dette manuelt, men det ville tage lang tid og kunne blive ret forvirrende. For at løse dette mere effektivt kan du oprette en liste ud fra en anden liste, dette kaldes en List Comprehension.
Ud fra de tre (3) listekonstanter: left_sack, middle_sack, right_sack skal du oprette tre nye lister kaldet: potatoes, onions og garlic, som ikke indeholder uønskede elementer fra sækkene. List Comprehensions giver dig mulighed for at oprette nye lister uden at skrive en masse kode, for eksempel:
# 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"]
I ovenstående eksempel oprettes listen med navnet potatoes ud fra listen med navnet sack, så den kun indeholder ["Potatoes", "Sweet Potatoes"] og udelukker "Spoiled Potatoes". Dette opnås ved at oprette en selvstændig for-løkke, i dette tilfælde ved at bruge x som indeks til at gennemgå listen og for/in-udsagn til at identificere og udelukke det uønskede element, nemlig enhver streng der indeholder ordet "Spoiled".
For at opsummere, find ud af om listekonstanterne indeholder ordet "Bad", "Spoiled" eller "Rotten" ved hjælp af funktionen speak(). Opret listerne potatoes, onions og garlic ved at bruge List Comprehensions, så de uønskede elementer, du fandt i hver liste, fjernes.
Når disse lister er oprettet, skal du gå hen til hver af de tre (3) gyldne X-mærker foran kasserne med grøntsagsskilte og placere listerne, ved hjælp af funktionen place(), i de tilsvarende kasser for at fuldføre level'et. Placeringerne er angivet ved skiltene, disse er onions i den venstre kasse, potatoes i den midterste kasse og garlic i den venstre kasse.