04. gyakorlat
Szerkesztés alatt!
Az oldal további része szerkesztés alatt áll, a tartalma minden további értesítés nélkül többször, gyakran, jelentősen megváltozhat!
Listák¶
Lista létrehozása¶
A listákat szögletes zárójelekkel ([
és ]
) hozzuk létre, és az elemeket vesszővel választjuk el egymástól.
Számokat tartalmazó lista létrehozása
1 2 3 4 5 6 7 8 |
|
Üres lista létrehozására használható a list()
függvény is.
Üres lista létrehozása
1 2 |
|
A list()
függvény
A list()
függvény tulajdonképpen egy konstruktor, amelynek a feladata egy list
típusú érték létrehozása.
Ha nem adunk neki argumentumot, akkor egy üres listát hoz létre.
Kaphat viszont argumentumként egy másik listát (de akár például halmazt, intervallumot is), amely esetben egy olyan új listát hoz létre, amely az argumentum értékeit tartalmazza.
Lista elemeinek elérése, módosítása¶
A lista elemeit indexelés segítségével érhetjük el.
Pythonban indexelésre a []
(subscript) operátort használhatjuk, és az indexelés 0-tól kezdődik, tehát a lista első eleme a 0. indexen van.
Az indexek segítségével módosíthatjuk is a lista tartalmát.
Lista indexelése
1 2 3 4 5 6 7 8 9 |
|
Nem létező indexek
Ha a []
operátornak érvénytelen indexet adunk (pl. a lista hosszánál nagyobbat), akkor a művelet hibát fog dobni.
A lista hossza - len()
¶
A len()
visszaadja a lista elemeinek számát.
A lista hossza
1 2 |
|
Lista bejárása¶
A listák feldolgozásánál elég gyakran van szükség arra, hogy a lista elemeit (sorban) bejárjuk (és az éppen aktuálisan vizsgált listaelemmel valamilyen műveletet végezzünk).
Ezt egy for
ciklus segítségével könnyen meg tudjuk tenni:
Lista bejárása for in lista
szerkezettel¶
A for
a listaelemeket mindig a lista elejétől a végéig, sorrendben járja be.
Lista elemeinek egyszerű bejárása for
-in
segítségével
1 2 3 4 |
|
1 2 3 4 5 |
|
Index-alapú bejárás¶
Néha nem csak a listaelem értéke, de az indexe is fontos lehet.
Illetve, ha a művelethez egyszerre több listaelem is szükséges, akkor érdemesebb inkább index szerint bejárni a listát.
Ezt a range()
segítségével tudjuk könnyen megtenni:
Lista bejárása indexek alapján
1 2 3 |
|
1 2 3 4 5 |
|
Lista bejárása és módosítása
Ha a listát a fentebb látható egyszerű módokon járjuk be, akkor a bejárása során a listát lehetőleg ne módosítsuk, azaz ne szúrjunk be vagy töröljünk belőle elemet (a listaelemek megváltoztatása megengedett, amíg a lista hossza megmarad).
Az index szerinti bejárás a lista módosítása esetén biztosan nem lesz jó, a natív for
-in
-es bejárás pedig a módosítás mikéntjétől függően okozhat meglepetéseket.
Lista elemek hozzáadása¶
Egy elem hozzáadása a lista végére (append()
)¶
Az .append()
metódussal egy új elemet adhatunk hozzá a lista végére.
Az .append()
metódus használata
1 2 3 |
|
Elem beszúrása egy adott pozícióra (insert()
)¶
Az .insert()
metódus segítségével beszúrhatunk egy elemet egy adott pozícióra.
A pozíció előtti elemek indexe nem változik, az eredetileg az adott pozíción és mögötte lévő elemek viszont "eggyel hátrébb tolódnak", vagyis az indexeik eggyel megnőnek.
Az .insert()
metódus használata
1 2 3 |
|
Nem létező indexek
Ha az .insert()
metódusnak túl nagy indexet adunk, akkor a lista végére fogja beszúrni az elemet.
Listaelemek törlése¶
Elem törlése index alapján (del
)¶
A del
utasítással egy adott indexen lévő elemet törölhetünk a listából.
A törölt elem mögötti listaelemek "eggyel előrébb csúsznak", vagyis az indexeik eggyel csökkennek.
A del
utasítás használata
1 2 3 |
|
Elem törlése érték alapján (remove()
)¶
A .remove()
metódus segítségével eltávolíthatunk egy adott értéket a listából.
A metódus az adott értékű elem sorban első előfordulását fogja törölni a listából, a további előfordulásait nem.
A törölt elem mögötti listaelemek "eggyel előrébb csúsznak", vagyis az indexeik eggyel csökkennek.
A .remove()
metódus használata
1 2 3 |
|
Nem létező értékek
Ha a .remove()
metódusnak olyan értéket adunk, amely nincs a listában, akkor a művelet hibát fog dobni.
Lista kiürítése (clear()
)¶
A .clear()
metódus segítségével kiüríthetjük a listát.
A .clear()
metódus használata
1 2 3 |
|
A list
mint mutable típus
A list
egy úgynevezett mutable típus Pythonban.
Ez azt jelenti, hogy ha egy konkrét listát manipulálunk (megváltoztatjuk, vagy töröljük az elemeit, beszúrunk, hozzáfűzünk elemeket), akkor NEM egy új listát kapunk, hanem magának a manipulált listának az értékét, elemeit változtatjuk meg.
Mivel Pythonban indirekt adattárolás van, ha erre nem figyelünk, az okozhat meglepetéseket!
Alapvető algoritmusok listákkal¶
Minimum és maximum érték¶
Minimum és maximum érték kiszámítása¶
A lista legkisebb és legnagyobb értékeit egy egyszerű listabejárással meg lehet határozni.
A lista legkisebb és legnagyobb eleme
1 2 3 4 5 6 7 8 9 10 11 |
|
A min()
és max()
függvények¶
A minimum és maximum meghatározása olyan alapvető műveletek, hogy Python-ban van rájuk beépített függvény, a min()
és a max()
.
A lista legkisebb és legnagyobb eleme
1 2 3 |
|
A min()
és max()
használhatósága
A min()
és max()
függvények olyan listákra alkalmazhatók, amelyek összes eleme páronként összehasonlítható egymással.
Például (de nem kizárólag) minden elemük szám, vagy minden elemük sztring.
Ha a listában van össze nem hasonlítható elempár, akkor a függvények hibát fognak dobni futás közben!
Listaelemek összege¶
Összeg meghatározása¶
A listaelemek összege egy egyszerű listabejárással meghatározható.
A listaelemek összegének kiszámolása
1 2 3 4 5 |
|
A sum()
függvény¶
A listaelemek összegének meghatározása olyan alapvető művelet, hogy Python-ban van rá beépített függvény, a sum()
.
A listaelemek összegének kiszámolása
1 2 |
|
A sum()
használhatósága
A sum()
függvény csak számokat tartalmazó listákra működik.
Listaelemek átlaga¶
Az átlag az elemek összegének és számának hányadosa.
Átlag számítása¶
A listaelemek átlaga egy egyszerű listabejárással, az összeg és a darabszám számolásával meghatározható.
A listaelemek átlaga
1 2 3 4 5 6 7 |
|
Átlag számítása beépített függvényekkel¶
Az átlagszámításra ugyan nincs beépített Python függvény, de a fentiekkel igazán egyszerű megoldani:
A listaelemek átlaga
1 2 3 |
|
Feladatok¶
1. feladat
Hozz létre egy listát szamok
néven, amely a következő számokat tartalmazza: [12, 7, 5, 10, 3, 8]
. Majd:
- Írd ki a lista hosszát!
- Írd ki a lista minimum és maximum értékét!
- Számítsd ki az elemek átlagát!
2. feladat
Hozz létre egy szamok
nevű listát, amely a következő számokat tartalmazza: [20, 35, 50, 65, 80]
. Majd:
- Adj hozzá egy új számot a lista végére.
- Szúrd be a 45-ös számot a 2. indexre.
- Töröld ki a 35-ös értékű elemet.
- Írd ki a lista tartalmát!
3. feladat
Írj egy programot, amely egy listában tárolja a számokat 1-től 15-ig, majd írja ki ezeket az elemeket egy for
ciklus segítségével!