Kihagyás

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
# Pozitív egész számok listája
szamok = [10, 20, 30, 40, 50]

# Negatív és pozitív számokat is tartalmazó lista
vegyes_szamok = [-5, 0, 5, 10, 15]

# Egyszerű számsorozat
egyes_szamok = [1, 2, 3, 4, 5]

Üres lista létrehozására használható a list() függvény is.

Üres lista létrehozása
1
2
ures_lista = []  # Üres lista
empty_list = list()
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
szamok = [10, 20, 30, 40, 50]

# 0. indexű elem elérése
elso_elem = szamok[0]  # 10
print(elso_elem)

# 2. indexű elem módosítása
szamok[2] = 35
print(szamok)  # [10, 20, 35, 40, 50]
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
szamok = [10, 30, 40, 50, 60]
print(len(szamok))  # 5

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
szamok = [10, 20, 35, 40, 50]

for szam in szamok:
    print(szam)
A fenti példa kimenete:
1
2
3
4
5
10
20
35
40
50

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
szamok = [10, 20, 35, 40, 50]
for i in range(len(szamok)):
    print(f"A(z) {i}. indexű elem: {szamok[i]}")
A fenti program kimenete:
1
2
3
4
5
A(z) 0. indexű elem: 10
A(z) 1. indexű elem: 20
A(z) 2. indexű elem: 35
A(z) 3. indexű elem: 40
A(z) 4. indexű elem: 50

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
szamok = [10, 20, 30]
szamok.append(40)
print(szamok)  # [10, 20, 30, 40]

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
szamok = [10, 20, 30, 40]
szamok.insert(2, 25)  # A 2-es indexre beszúrja a 25-öt
print(szamok)  # [10, 20, 25, 30, 40]
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
szamok = [10, 30, 40, 50, 60]
del szamok[1]  # A 1-es indexű elemet törli
print(szamok)  # [10, 40, 50, 60]

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
szamok = [10, 20, 25, 30, 40]
szamok.remove(25)
print(szamok)  # [10, 20, 30, 40]
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
szamok = [10, 30, 40, 50, 60]
szamok.clear()
print(szamok)  # []
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
szamok = [10, 30, 40, 60, 50]
minimum = szamok[0]
for szam in szamok:
    if szam < minimum:
        minimum = szam
print(minimum)  # 10
maximum = szamok[0]
for szam in szamok:
    if szam > minimum:
        maximum = szam
print(maximum)  # 60

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
szamok = [10, 30, 40, 60, 50]
print(min(szamok))  # 10
print(max(szamok))  # 60
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
szamok = [10, 30, 40, 50, 60]
osszeg = 0
for szam in szamok:
    osszeg += szam
print(osszeg)  # 190

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
szamok = [10, 30, 40, 50, 60]
print(sum(szamok))  # 190
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
szamok = [10, 30, 40, 50, 60]
osszeg = 0
darab = 0
for szam in szamok:
    osszeg += szam
    darab += 1
print(osszeg/darab)  # 38.0

Á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
szamok = [10, 30, 40, 50, 60]
atlag = sum(szamok) / len(szamok)
print(atlag)  # 38.0

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:

  1. Írd ki a lista hosszát!
  2. Írd ki a lista minimum és maximum értékét!
  3. 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:

  1. Adj hozzá egy új számot a lista végére.
  2. Szúrd be a 45-ös számot a 2. indexre.
  3. Töröld ki a 35-ös értékű elemet.
  4. Í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!