Python

Listák létrehozása

Ha Pythonban programozol, nagyon gyorsan eljön az a pont, amikor már nem elég egyetlen adatot eltárolni. Oké, egy név, egy szám vagy egy életkor még simán mehet egy változóba. De mi van akkor, ha több hónapot, több nevet vagy több eredményt szeretnél együtt kezelni?

Na itt lépnek színre a listák.

Python while ciklus működése illusztráción

A lista Pythonban egy olyan adattípus, amiben több elemet tudsz eltárolni egyetlen név alatt. Ez azért hasznos, mert nem kell külön változót létrehoznod minden egyes adathoz. Elég egy lista, és máris átláthatóbban tudsz dolgozni.

Ebben a bejegyzésben megnézzük, hogyan működik a listák létrehozása Pythonban, hogyan kell őket helyesen megadni, és hogyan tudod kiíratni a tartalmukat.

Python listák létrehozása

Amikor programot írunk, gyakran szeretnénk adatokat tárolni. Ezek lehetnek például hónapok, tantárgyak, pontszámok vagy akár bevásárlólista-elemek. Egy-egy adatot könnyen el tudunk menteni változókba, de ha sok összetartozó adatunk van, akkor sokkal jobb megoldás a lista.

A lista abban segít, hogy több elemet egyetlen változóban tudjunk tárolni.

Miért jó a lista?

Képzeld el, hogy el akarod tárolni az év hónapjait. Megtehetnéd így is:

  • honap1 = „január”
  • honap2 = „február”
  • honap3 = „március”

Ez működik, csak hosszú és nehezen kezelhető. Elég hamar káosz lesz belőle. A Python erre ad egy sokkal tisztább megoldást: a listát. 

Lista létrehozása Pythonban

A lista létrehozásához megadjuk a lista nevét, írunk egy egyenlőségjelet, majd szögletes zárójelek közé felsoroljuk a lista elemeit.

honapok = [„január”, „február”, „március”, „április”, „május”, „június”, „július”, „augusztus”, „szeptember”, „október”, „november”, „december”]

Ebben a példában:

  • a lista neve: honapok
  • az egyenlőségjel után adjuk meg a lista értékét
  • a lista elemei [] közé kerülnek
  • az elemeket vesszővel választjuk el egymástól
  • mivel itt szövegeket tárolunk, ezért idézőjelbe kell írni őket

Ez nagyon fontos: ha a lista elemei szövegek, akkor idézőjel kell. Ha számok, akkor nem.

Egy számlista így nézne ki:
szamok = [3, 7, 12, 25, 40]

A lista elemei lehetnek különböző típusúak is: 

adatok = [„Anna”, 16, True]

Ez technikailag teljesen jó, de kezdőként érdemes azonos típusú adatokat egy listában tárolni, mert úgy átláthatóbb marad a program.

Üres lista létrehozása: olyan is van, hogy előre létrehozol egy listát, de még nincs benne semmi:

nevek = []

Ez egy üres lista. Később lehet elemeket hozzáadni.

Lista tartalmának kiiratása

Ha szeretnéd megnézni mi van a listában, akkor egyszerűen kiirathatod print() segítségével:

print(honapok)

A program ilyenkor kiírja a teljes lista tartalmát. A kimenet valami ilyesmi lesz:  

[‘január’, ‘február’, ‘március’, ‘április’, ‘május’, ‘június’, ‘július’, ‘augusztus’, ‘szeptember’, ‘október’, ‘november’, ‘december’]

A Python úgy mutatja meg a lista elemeit, ahogy eltárolta. 

A lista szebb kiiratása

Ha kulturáltabban szeretnéd megjeleníteni a lista elemeit, használhatod a join() metódust:

print(„, „.join(honapok))
print(” | „.join(honapok))

A join összefűzi a lista elemeit egyetlen szöveggé, és közéjük beszúrja azt az elválasztót, amit megadtál. Például a „, „.join(honapok) – vesszővel választja el a hónapok neveit: január, február, március.
A ” | „.join(honapok) függőleges vonallal választja el őket: január | feburár | március
A join() csak akkor működik jól, ha a lista elemei szövegek.  

A lista hosszának lekérdezése len() függvénnyel

Ha szeretnéd tudni, hány elem van a listában, használd a len() függvényt: 

print(len(honapok))

ez megadja a lista elemeinek számát. Ha a hónapok lista 12 hónapot tartalmaz, akkor a kimenet: 12. A len függvény gyakran előkerül Pythonban, érdemes megjegyezni- 

Adott listaelem kiíratása

Ha nem az egész listára vagyunk kiváncsiak, hanem csak egyetlen elemre, akkor index alapján tudsz hivatkozni rá. 
print(honapok[0])
Ez a lista első elemét írja ki. : január. 

A lista indexelése nulláról indul. Ez elsőre kicsit fura lehet, de programozásban teljesen alap. 

Több listaelem elérése szeleteléssel

Nemcsak egyetlen elemet kérhetsz le, hanem a lista egy részét is. Ezt szeletelésnek hívjuk. 
print(honapok[0:2] – ez a 0 és az 1. indexű elemeket írja ki, vagyis: január február.
Szeletelésnél a kezdő index még benne van, a záró index már nincs. Azt jelenti: induljon a 0. indextől és álljon meg a 2. index előtt. 

Kiíratás egy adott helytől a lista végéig 

Ha egy bizonyos elemtől kezdve az összes többit szeretnéd látni, akkor a második indexet el is hagyhatod: 

print(honapok[2:])

Ez a 2. indexű elemtől kezdi a kiírást, tehát: március, április, május …

Negatív indexelés

A Pythonban lehet visszafelé is számolni: 

print(honapok[-2]

Ez a lista végétől számított elemet adja vissza, azaz november lesz. Nem azt jelenti, hogy visszafelé végigmegy a listán, hanem a végétől számolod az indexeket:

honapok[-1] – december
honapok[-2]  november
honapok[-3] – október …

Ugyanez működik szövegeknél is

A szeletelés nemcsak listáknál működik, hanem stringeknél is, mert a szöveg is egy karakterből álló sorozat. 

szo = „Python”
print(szo[:4] ->  kimenet: Pyth. Itt az első 4 karaktert fogja kiírni, ugyanazon a logika mentén, mint a listáknál. 

Szavak bekérése és listán tárolása

Most nézzünk egy nagyon hasznos példát: azt szeretnénk, hogy a felhasználó több szót adjon meg, és ezeket egy listában tároljuk.

Üres lista létrehozása

Először létrehozunk egy üres listát:

szavak = []

Ide kerülnek majd a felhasználó által megadott szavak. Egy változó kezdőérték nélkül Ezután létrehozunk egy változót:

szo = None

A None azt jelenti, hogy a változónak egyelőre nincs valódi értéke. Ez egy gyakori megoldás Pythonban, ha később akarunk majd értéket adni neki. 

Szavak bekérése ciklusban

A cél az, hogy addig kérünk be szavakat, amíg a felhasználó nem nyom csak egy Entert. 

szavak = []
szo = None

 

while szo != „”:
    szo = input(„Adj meg egy szót: „)

 

    if szo != „”:
        szavak.append(szo)
print(szavak)

Hogyan működik ez?

  • létrehozunk egy üres listát
  • bekérünk egy szót a felhasználótól
  • ha a beírt szöveg nem üres, hozzáadjuk a listához az append() segítségével
  • ha a felhasználó üresen hagyja a sort és csak Entert nyom, a ciklus leáll

Az append() egy listaelem-hozzáadó művelet: szavak.append(szo) -> a szo változó aktuális értékét hozzáfűzik a lista végéhez. 

Gyakorlás

1. Hónapok listája

Hozz létre egy honapok nevű listát, amely az év első 6 hónapját tartalmazza.

Feladatok:

  • írasd ki az egész listát
  • írasd ki a lista hosszát
  • írasd ki az első elemet
  • írasd ki a harmadik elemet
  • írasd ki az utolsó elemet

Megoldás
honapok = [„január”, „február”, „március”, „április”, „május”, „június”]

print(honapok)
print(len(honapok))
print(honapok[0])
print(honapok[2])
print(honapok[5]) vagy
print(honapok[-1]
       

2. Szebb kiíratás

A honapok listát írasd ki többféleképpen:

  • vesszővel elválasztva
  • | jellel elválasztva
  • - jellel elválasztva

Megoldás
print(„, „.join(honapok))
print(” | „.join(honapok))
print(” – „.join(honapok))

3. Szeletelés gyakorlása

Egy napok listában tárold a hét napjait.

Feladatok:

  • írasd ki az első 3 napot
  • írasd ki a 2. elemtől a végéig
  • írasd ki az utolsó 2 elemet
  • írasd ki a lista középső részét szeleteléssel

Megoldás
nap = [„hétfő”, „kedd”, „szerda”, „csütörtök”, „péntek”, „szombat”, „vasárnap”]
print(nap[:3])
print(nap[1:])
print(nap[5:])
print(nap[2:4]) vagy print[-2:]
       

4. Kedvenc kaják

Készíts egy kajak nevű listát legalább 5 étellel.

Feladatok:

  • írasd ki az egész listát
  • írasd ki a második kedvencedet
  • írasd ki az első 3 ételt
  • írasd ki a lista utolsó elemét negatív indexeléssel
  • írasd ki a lista hosszát

Megoldás
kajak = [„banán”, „eper”, „csoki”, „sajt”, „croissant”]
print(kajak)
print(kajak[1])
print(kajak[:3])
print(kajak[1])
print(len(kajak))
       

5. String és lista közti hasonlóság

Hozz létre egy változót:

szo = „programozas”

  • írasd ki az első 4 karaktert
  • írasd ki az utolsó 3 karaktert
  • írasd ki a 2. karaktertől az 5. karakterig
  • figyeld meg, hogy ez mennyire hasonlít a listák szeletelésére

Megoldás
szo = „programozas”
print(szo[:4])
print(szo[3:])
print(szo[1:5])
       

6. Szóbekérős lista

Készíts programot, amely szavakat kér be a felhasználótól, és eltárolja őket egy listában.

Szabály:

  • addig kérjen be új szót, amíg a felhasználó nem nyom egy üres Entert

A végén:

  • írasd ki a teljes listát
  • írasd ki, hány szót adott meg a felhasználó

    Megoldás
    szavak = []
    szo = None

    while szo != „”:
        szo = input(„Adj meg egy szót: „)
        if szo != „”:
            szavak.append(szo)
    print(szavak)
    print(len(szavak))
           

    7. Bevásárlólista

    Kérj be a felhasználótól bevásárlólista-elemeket, és tárold őket listában.

    A végén:

    • írasd ki a lista elemeit egy sorban vesszővel elválasztva
    • írasd ki az első és az utolsó elemet
    • írasd ki a lista hosszát

    ➡️ Extra: csak akkor add hozzá a listához az elemet, ha nem üres a megadott szöveg.

    Megoldás
    lista = []
    tetelek = None

    while tetelek != „”:
        tetelek = input(„Mit vásárolsz ma? „)
        if tetelek != „”:
            lista.append(tetelek)
    print(„, „.join(lista))


    if len(lista) > 0:
        print(lista[0], lista[1])

    print(len(lista))

    8. Osztálynévsor

    Legyen egy lista 5 tanuló nevével.

    Feladatok:

    • írasd ki a teljes listát
    • írasd ki a 3. tanuló nevét
    • írasd ki az első 2 tanulót
    • írasd ki az utolsó 3 tanulót
    • írasd ki a neveket pontosvesszővel elválasztva

    Megoldás
    lista = [„Kiss Adam”, „Nagy Géza”, „Kovács Anna”, „Király Elek”, „Zord Bea”]

    print(lista)
    print(lista[2])
    print(lista[:2])
    print(lista[3:])
    print(„; „.join(lista))
           

    9. Top 3 kedvenc

    Kérj be a felhasználótól 3 kedvenc filmet vagy zenét, és tárold el listában.

    A végén:

    • írasd ki a teljes listát
    • írasd ki őket | elválasztással
    • írasd ki az első kedvencet
    • írasd ki az utolsó kedvencet
    • írasd ki a lista hosszát

        Megoldás
        lista = []

        while len(lista) < 3:
            film = input(„Melyik a kedvenc filmed? „)
            lista.append(film)
        print(lista)
        print(” | „.join(lista))
        print(lista[0])
        print(lista[1])
        print(len(lista))
               

        10. Csak rövid szavak

        Kérj be szavakat a felhasználótól egy listába, üres Enterig.

        A végén:

        • írasd ki az összes szót
        • írasd ki csak az első 3 szót
        • írasd ki az utolsó 2 szót
        • írasd ki, hány szó került a listába

        Megoldás
        lista = []
        szavak = None

        while szavak != „”:
            szavak = input(„Adj meg egy szót!: „)
            if szavak !=„”:
                lista.append(szavak)

        print(lista)
        print(lista[:3])
        print(lista[2:])
        print(len(lista))
               

        11. Hónapokból részlista

        Hozd létre az év 12 hónapját tartalmazó listát.

        Feladatok:

        • írasd ki az első félév hónapjait
        • írasd ki a második félév hónapjait
        • írasd ki az első 3 hónapot
        • írasd ki az utolsó 3 hónapot
        • írasd ki a hónapokat egy sorban, vesszővel elválasztva

        Megoldás
        honapok = [„január”, „február”, „március”, „április”, „május”, „június”, „július”, „augusztus”, „szeptember”, „október”, „november”, „december”]

        print(honapok[:6])
        print(honapok[6:])
        print(honapok[:3])
        print(honapok[3:])
        print(„, „.join(honapok))
               

        12. Saját listaépítő program

        Készíts programot, amely:

        • létrehoz egy üres listát
        • bekér adatokat a felhasználótól
        • minden megadott adatot eltárol
        • üres Enterre leáll

        A program végén írja ki:

        • a teljes listát
        • a lista hosszát
        • az első elemet, ha van ilyen
        • az utolsó elemet, ha van ilyen

          Megoldás
          lista = []
          adat = None

          while adat != „”:
              adat = input(„Add meg az adatot: „)
              if adat != „”:
                  lista.append(adat)
          print(lista)
          print(len(lista))
          if lista != > 0:
              print(lista[0])
              print(lista[1])
                 

          13. Vegyes listafigyelés

          Hozz létre egy ilyen listát:

          • egy szöveg
          • egy szám
          • egy logikai érték

          Utána:

          • írasd ki az egész listát
          • írasd ki külön az első, második és harmadik elemet

          ➡️ Figyeld meg, hogy a Python ezt simán engedi, még ha nem is mindig ez a legszebb megoldás.

          Megoldás
          lista = [„alma”, 2, True]

          print(lista)
          print(lista[0])
          print(lista[1])
          print(lista[2])
                 
          Vidám anime lány számítógépnél grafikát készít, Inkscape alapok tanulása

          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.

          Ha szeretnél továbbhaladni a Python programozással, lépj a következő leckére: