Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau
Geavanceerde Lijsten
Lijstcomprehensies
In dit hoofdstuk gaan we nieuwe manieren verkennen om lijsten in Python te gebruiken, met betrekking tot optimalisatie, compartmentalisering en zelfs het maken van grote multidimensionale lijsten zoals matrices die sterk op tabellen lijken.
Voor dit niveau zullen we werken met lijstcomprehensies, dit zijn lijsten die kunnen worden gemaakt van andere lijsten door alleen bepaalde componenten ervan te selecteren. Dit gebeurt ook in een zeer eenvoudige, enkele regel code zonder dat je handmatig een lijst hoeft in te voeren of met complexe automatiseringen hoeft te komen.

Doelstelling
Verzamel en sorteer alle wortelgroenten in de voorraadkast zodat je ze op de juiste plek kunt opbergen met list comprehensions.
De voorraadkast bevat verschillende zakken vol met wortelgroenten die gesorteerd moeten worden, namelijk: potatoes, onions en garlic. Er zitten waarschijnlijk groenten tussen die bedorven zijn. Haal de groenten eruit die goed zijn en bewaar ze in de kratten waar ze thuishoren.
Om dit te realiseren moet je achterhalen welke items in elke zak zitten. Er zijn drie (3) lijstconstanten die de informatie bevatten van elk van de zakken; deze heten: left_sack, middle_sack, right_sack. Deze lijstconstanten komen overeen met de zakken op het veld op de locaties zoals in hun naam aangegeven.
Loop naar de verlichte X-markeringen voor elke zak en gebruik de speak() functie om de inhoud van elke zak te achterhalen door de constanten te gebruiken, bijvoorbeeld: player.speak(left_sack). Zodra je de inhoud van elke zak hebt vastgesteld, identificeer dan de items die verwijderd moeten worden, zoals groenten met: "Bad", "Spoiled" of "Rotten" in hun naam.
Je moet nieuwe lijsten maken die alleen items bevatten die geschikt zijn voor consumptie. Je zou dit handmatig kunnen doen, maar dat duurt lang en kan tamelijk verwarrend worden. Om dit effectiever uit te voeren kun je een lijst maken op basis van een andere lijst, wat bekendstaat als een List Comprehension.
Uit de drie (3) lijstconstanten: left_sack, middle_sack, right_sack maak je drie nieuwe lijsten met de namen: potatoes, onions en garlic die geen ongewenste items bevatten. List Comprehensions stellen je in staat om nieuwe lijsten te maken zonder een heleboel code te schrijven, bijvoorbeeld:
# 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"]
In het bovenstaande voorbeeld wordt de lijst genaamd potatoes gecreëerd uit de lijst sack, waarbij alleen ["Potatoes", "Sweet Potatoes"] wordt behouden en "Spoiled Potatoes" wordt uitgesloten. Dit gebeurt door een zelfstandige for loop te maken, waarbij x als index wordt gebruikt om door de lijst te lopen, en de for / in instructies worden ingezet om het ongewenste element - elke string die het woord "Spoiled" bevat - te identificeren en uit te sluiten.
Samenvattend: controleer met de speak() functie of de lijstconstanten de woorden "Bad", "Spoiled" of "Rotten" bevatten, maak dan lijsten genaamd potatoes, onions en garlic met behulp van List Comprehensions waarbij je de ongewenste elementen verwijdert die je in elke lijst aantreft.
Zodra deze lijsten zijn gemaakt, loop je naar elk van de drie (3) gouden X-markeringen voor de kratten met de groenteborden, en plaats je de lijsten met de place() functie in de overeenkomstige kratten om het level te voltooien. De locaties worden aangegeven door de borden, namelijk: onions in de linker krat, potatoes in de middelste krat en garlic in de linker krat.