Python
Listák bejárása
A listák létrehozása még csak az első kör. Attól, hogy már tudsz ilyet írni:
tantargyak = [„matek”, „töri”, „tesi”, „infó”]
még nem sok minden történik.
A programozás ott kezd érdekes lenni, amikor végig is tudsz menni a lista elemein. Ez a lista bejárása. Nem egyszerre akarjuk látni az egészet, hanem sorban dolgozunk vele.
Lista bejárása for ciklussal
Ez a legegyszerűbb és legbarátibb megoldás.
- A for ciklus sorban végigmegy a lista elemein.
- Az aktuális elemet beteszi a tantargy valtozóba
- A ciklusmag minden elemnél egyszer lefut.
Ez a módszer akkor a legjobb, ha magukra az értékekre vagy kiváncsi, és nem érdekel, hányadik helyen állnak. Másik példa:
Számok bejárása range() segítségével
A range akkor kell, amikor nem egy lista elemein akarsz közvetlenül végigmenni, hanem egy számtartományon.
A megadott végérték, amint látható, nem része a tartománynak. 10 darab számot ad vissza, de itt a 0 az első.
Két paraméterrel
Az első a kezdőérték (2), a második szám a végérték. A kezdőérték benne van, a végérték nincs.
Három paraméterrel
2 a kezdőérték, 20 a végérték, 3 pedig a lépésköz. A range(start, stop, step) formátumot a Python built-in dokumentációja is így írja le, és a range valójában egy beépített sorozattípus, nem sima lista.
Még egy példa:
Ha számolni kell, vagy valamit pl 5-ször megismételni, vagy ha indexekkel akarsz dolgozni, a range() gyakran előkerül.
Milyen indexen van az adott elem?
Van ez a lista: tantargyak = [„matek”, „töri”, „tesi”, „infó”] és járjuk be újra:
for tantargy in tantargyak:
print(tantargy)
Ez a legletisztultabb forma. De mi van akkor, ha azt is szeretnéd tudni, hogy milyen indexen van az adott elem? Na itt jönnek a következő módszerek:
Indexek kezelése külön változóval
Ez még teljesen érthető kezdő megoldás:
- Létrehozol egy index változót 0 értékkel.
- Minden körben kiírod az aktuális indexet és elemet
- A végén növeled az indexet eggyel.
Ennél azonban vannak szebb megoldások is.
Lista bejárása indexekkel (range(len(lista))
A len() megadja, hány elem van a listában. A Python dokumentációja szerint a sorozatok indexei 0-tól n-1-ig tartanak, ahol n a hossz. Ezért működik szépen együtt a len() és a range().
Ebben a példában:
- len(tantargyak) -> 4
- range(4) -> 0, 1, 2, 3, Ezek lesznek az indexek.
- A tantargyak[index] segítségével elérjük az adott elemet.
Ez akkor hasznos, ha:
- index alapján akarsz módosítani
- két lista azonos helyű elemeit akarod összehasonlítani
- szükséged van a pozícióra is, nem csak az értékre
A legkényelmesebb megoldás: enumerate()
Ez az a rész, amit érdemes megszeretni.
Az enumerate() a Python dokumentációja szerint egy olyan objektumot ad vissza, amely minden elemhez egy sorszámot és az értéket együtt adja, alapértelmezés szerint 0-ról indulva. Tehát ilyen párokat ad:
(0, „matek”)
(1, „töri”)
(2, „tesi”)
(3, „infó”)
A for index, tantargy in … sor ezeket rögtön két változóba bontja szét:
- index
- tantargy
A számozás természetesen nem csak nulláról indulhat:
Melyiket mikor érdemes használni?
1. for elem in lista:
- ha csak az elemek kellenek, nem érdekel az index
2. for index in range(len(lista))
- ha ténylegesen indexszel akarsz dolgozni
- index alapján akarsz elemeket elérni
- több lista azonos indexű elemeit hasonlítod össze
3. for index, elem in enumerate(lista)
- használd akkor, ha kell az index is, az elem is és nem akarsz kézzel számlálgatni
Gyakorlás
1. Tantárgyak kiírása for ciklussal
Hozz létre egy tantargyak nevű listát legalább 5 tantárggyal. Járd be a listát for ciklussal, és írd ki az elemeket egyesével.
Megoldás
2. Kedvenc előadók listája
Hozz létre egy listát 4 kedvenc előadóval vagy zenekarral. Járd be a listát, és minden elem elé írd ki ezt a szöveget:
Most ezt hallgatnám:
Megoldás
3. Számok kiírása range() segítségével
Írj programot, amely range() használatával kiírja a számokat:
- 0-tól 9-ig
- 3-tól 12-ig
- 2-es lépésközzel 0-tól 20-ig
Megoldás
4. Visszaszámlálás
Írj programot, amely 10-től 1-ig írja ki a számokat range() segítségével.
Megoldás
5. Listaelemek indexszel – range(len(lista))
Legyen egy filmek lista 5 filmmel és írd ki az indexet és a film címét.
Megoldás
6. Enumerate gyakorlása
Legyen egy jatekok lista 5 játékkal. Használj enumerate()-ot, és írd ki az indexet és az elemet.
Megoldás
7. Sorszámozás
Írj programot egy teendők listával, amely enumerate segítségével számozza meg a teendőket 1-től indulva
Megoldás
8. Páros indexű elemek
Legyen egy lista 6 elemmel. Járd be range(len(lista)) segítségével, és csak azokat az elemeket írd ki, amelyek páros indexen vannak.
Megoldás
9. Rövid szavak listája
Legyen egy lista különböző hosszúságú szavakkal. Járd be a listát for ciklussal, és csak azokat írd ki, amelyek 5 karakternél rövidebbek.
Megoldás
10. Kombinált gyakorló
Kérj be a felhasználótól 5 szót egy listába. Ezután:
- írd ki az elemeket sima
forciklussal - írd ki az indexet és az elemet
range(len(lista))segítségével - írd ki az indexet és az elemet
enumerate()használatával is
Megoldás
Ha a ciklusok működését a hivatalos leírás alapján is szeretnéd megnézni, olvasd el a Python vezérlési szerkezetekről szóló tutorialját.


