Coding for KidsCoding for Kids
Kreatív SzintekKihívásokTanári Útmutató
Szavazzon a funkciókra
Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint

Haladó listák
Listaértelmezések

Ebben a fejezetben új módszereket fogunk felfedezni a Python listáinak használatára, az optimalizáció, elkülönítés, sőt nagy, többdimenziós listák (mátrixok) létrehozására, melyek nagyon hasonlóak a táblázatokhoz.

Ebben a szinten a list comprehension-ekkel fogunk dolgozni, melyek lehetővé teszik, hogy egy másik listából csak bizonyos komponensek kiválasztásával hozzunk létre új listákat. Ezt egy nagyon egyszerű, egy soros kóddal is meg lehet valósítani, anélkül, hogy kézzel kellene megadni egy listát vagy bonyolult automatizálást kellene kitalálni.

Guide

Cél

Fogd meg és rendezd a kamrában található gyökérzöldségeket, hogy a megfelelő helyen tárold őket list comprehension használatával.

A kamrában több zsák található, amelyek tele vannak gyökérzöldségekkel, ezek: potatoes, onions és garlic. Valószínűleg találsz olyan zöldségeket is, amelyek megromlottak. Vedd ki a jó minőségű zöldségeket, és helyezd őket abba a ládába, ahová tartoznak.

A feladat végrehajtásához meg kell határoznod, milyen elemek vannak az egyes zsákokban. Három (3) lista konstans tartalmazza az egyes zsákok adatait, ezek neve: left_sack, middle_sack, right_sack. Ezek a lista konstansok a pályán meghatározott helyeken elhelyezkedő zsákoknak felelnek meg.

Sétálj el az egyes zsákok előtt lévő X fényjelzőkhöz, és használd a speak() függvényt az egyes zsákok tartalmának azonosítására a konstansok segítségével, például: player.speak(left_sack). Miután azonosítottad az egyes zsákok tartalmát, keresd meg az eltávolítandó elemeket, mint például olyan zöldségek, amelyek a nevükben szerepelnek a következők: "Bad", "Spoiled" vagy "Rotten".

Új listákat kell létrehoznod, amelyek csak a fogyasztható elemeket tartalmazzák. Ezt megtehetnéd manuálisan, de az időigényes és könnyen zavarossá válhat. Egy listából egy másik listát létrehozni hatékonyabb megoldás, ezt nevezzük List Comprehension-nek.

A három (3) lista konstansból: left_sack, middle_sack, right_sack hozd létre a három új listát, amelyek neve: potatoes, onions és garlic, és amelyek nem tartalmazzák a nem kívánt elemeket. A List Comprehensions segítségével új listákat hozhatsz létre anélkül, hogy rengeteg kódot kellene írnod, például:

# 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"]

A fenti példában a potatoes nevű lista a sack listából jön létre, és csak a ["Potatoes", "Sweet Potatoes"] elemeket tartalmazza, kizárva a "Spoiled Potatoes" elemet. Ezt úgy érjük el, hogy létrehozunk egy önálló for ciklust, ebben az esetben x a lista bejárásához, és for/in utasításokkal azonosítjuk és kizárjuk a nem kívánt elemet, azaz minden olyan stringet, amely tartalmazza a "Spoiled" szót.

Összefoglalva, határozd meg, hogy a lista konstansok tartalmazzák-e a "Bad", "Spoiled" vagy "Rotten" szavakat a speak() függvény segítségével, majd hozd létre a potatoes, onions és garlic listákat List Comprehensions alkalmazásával úgy, hogy eltávolítod az egyes listákból a nem kívánt elemeket.

Miután ezek a listák létrejöttek, sétálj el a három (3) arany X jelzéshez a zöldséges ládák előtt, és helyezd el a listákat a megfelelő ládákba a place() függvény használatával a pálya befejezéséhez. A helyszíneket a feliratok jelzik, ezek: onions a bal ládában, potatoes a középső ládában, és garlic a bal ládában.

Kódkönyv