Avansert Pythonutviklingskurs
Kapittel
>
Nivå
Avanserte lister
Listeforståelser
I dette kapitlet skal vi utforske nye måter å bruke lister i Python på, med tanke på optimalisering, oppdeling og til og med å lage store flerdimensjonale lister som ligner tabeller.
For dette nivået skal vi arbeide med listeuttrykk. Dette er lister som kan opprettes fra andre lister ved kun å velge visse komponenter fra dem. Dette gjøres også med en veldig enkel enkeltlinjers kode uten at du manuelt må skrive inn en liste eller finne på komplekse automasjoner.

Mål
Hent og sorter alle rotgrønnsakene i lagringsrommet slik at du kan plassere dem på riktig sted ved hjelp av list comprehensions.
Lagringsrommet har flere sekker fulle av rotgrønnsaker som må sorteres, nemlig: potatoes, onions og garlic. Det kan hende at noen av grønnsakene har blitt dårlige. Ta ut grønnsakene som er gode og plasser dem i kassene der de hører hjemme.
For å oppnå dette må du identifisere hvilke elementer som er inni hver sekk. Det finnes tre (3) listekonstanter som inneholder informasjonen for hver av sekkene, disse er kalt: left_sack, middle_sack, right_sack. Disse listekonstantene tilsvarer sekkene på banen i lokalitetene som er angitt av navnene deres.
Gå til de lyse X-merkene foran hver sekk og bruk speak()-funksjonen for å identifisere innholdet i hver sekk ved å bruke konstantene, for eksempel: player.speak(left_sack). Når du har identifisert innholdet i hver sekk, identifiser elementer som må fjernes, slik som grønnsaker med: "Bad", "Spoiled" eller "Rotten" i navnet.
Du må lage nye lister som kun inneholder elementer som er bra for konsumering. Du kunne gjort dette manuelt, men det ville tatt tid og kunne blitt ganske forvirrende. For å oppnå dette på en mer effektiv måte kan du lage en liste ut fra en annen liste, dette kalles en List Comprehension.
Fra de tre (3) listekonstantene: left_sack, middle_sack, right_sack skal du lage tre nye lister kalt: potatoes, onions og garlic som ikke inneholder uønskede elementer fra sekkene. List Comprehensions lar deg lage nye lister uten å måtte 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 eksempelet ovenfor blir listen kalt potatoes laget ut fra listen sack, og den inneholder kun ["Potatoes", "Sweet Potatoes"], mens den utelater "Spoiled Potatoes". Dette oppnås ved å lage en selvstendig for-løkke, i dette tilfellet ved å bruke x som en indeks for å gå gjennom listen og for/in-setninger for å identifisere og utelukke det uønskede elementet, altså enhver streng som inneholder ordet "Spoiled".
For å oppsummere, finn ut om listekonstantene inneholder ordet "Bad", "Spoiled" eller "Rotten" ved å bruke speak()-funksjonen, og lag lister potatoes, onions og garlic ved hjelp av List Comprehensions, der du fjerner de uønskede elementene du fant i hver liste.
Når disse listene er laget, gå til hver av de tre (3) gull X-merkene foran kassene med grønnsaksskilt, og plasser listene ved hjelp av place()-funksjonen i de tilsvarende kassene for å fullføre nivået. Plasseringene er angitt av skiltene, der onions er i venstre kasse, potatoes i midtste kasse og garlic i den venstre kassen.