Avancerad Pythonutvecklingskurs
Kapitel
>
Nivå
Avancerade listor
Listkomprehensioner
I detta kapitel ska vi utforska nya sätt att använda listor i Python, med avseende på optimering, uppdelning och även skapa stora flerdimensionella listor som matriser, vilka liknar tabeller.
För denna nivå kommer vi att arbeta med listförståelse, vilket är listor som kan skapas från andra listor genom att enbart välja ut vissa komponenter från dem. Detta görs också på ett mycket enkelt sätt med en rad kod, utan att manuellt behöva ange en lista eller komma på komplexa automationer.

Mål
Fånga och sortera alla rotgrönsaker i skafferiet så att du kan förvara dem på rätt plats med hjälp av list comprehensions.
Skafferiet har flera säckar fulla med rotgrönsaker som behöver sorteras, dessa är: potatoes, onions och garlic. Det finns troligtvis grönsaker som blivit dåliga. Plocka ut de grönsaker som är bra och förvara dem i de lådor där de hör hemma.
För att klara av detta måste du identifiera vilka föremål som finns i varje säck. Det finns tre (3) listkonstanter som håller informationen om var och en av säckarna, dessa är namngivna: left_sack, middle_sack, right_sack. Dessa listkonstanter motsvarar säckarna på fältet på de platser som anges av deras namn.
Gå till de ljusa X-märkena framför varje säck och använd funktionen speak() för att identifiera innehållet i varje säck genom att använda konstanterna, till exempel: player.speak(left_sack). När du identifierar innehållet i varje säck, identifiera de föremål som behöver tas bort, såsom grönsaker med: "Bad", "Spoiled" eller "Rotten" i namnet.
Du behöver skapa nya listor som endast innehåller föremål som är bra att äta. Du skulle kunna göra detta manuellt men det skulle ta ganska lång tid och det kan bli ganska förvirrande. För att genomföra detta mer effektivt kan du skapa en lista utifrån en annan lista, vilket är känt som en List Comprehension.
Från de tre (3) listkonstanterna: left_sack, middle_sack, right_sack ska du skapa tre nya listor med namnen: potatoes, onions och garlic som inte innehåller oönskade föremål i säckarna. List Comprehensions låter dig skapa nya listor utan att behöva skriva en massa kod, till exempel:
# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # Detta skapar en lista med namnet potatoes som innehåller: # ["Potatoes", "Sweet Potatoes"]
I exemplet ovan skapas listan med namnet potatoes utifrån listan med namnet sack, och innehåller endast ["Potatoes", "Sweet Potatoes"] och exkluderar "Spoiled Potatoes". Detta uppnås genom att skapa en självständig for-loop, i detta fall med x som index för att gå igenom listan och for / in satser för att identifiera och exkludera det oönskade elementet, nämligen alla strängar som innehåller ordet "Spoiled".
För att sammanfatta, kontrollera om listkonstanterna innehåller orden "Bad", "Spoiled" eller "Rotten" med hjälp av funktionen speak(), skapa listorna potatoes, onions och garlic med List Comprehensions där du tar bort de oönskade elementen du hittade i varje lista.
När dessa listor är skapade, gå till var och en av de tre (3) gyllene X-märkena framför lådorna med grönsaksskyltarna och placera listorna i de motsvarande lådorna med hjälp av funktionen place(), för att slutföra nivån. Placeringarna anges med skyltarna, där onions är på den vänstra lådan, potatoes i den mellersta lådan och garlic på den vänstra lådan.