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. 

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

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
    tantargyak = [„matek”, „töri”, „magyar”, „biológia”, „infó”]
    index = 0
    for tantargy in tantargyak:
        print(index, tantargy)
        index += 1

    tantargyak = [„matek”, „töri”, „magyar”, „biológia”, „infó”]
    for index in range(len(tantargyak)):
        print(index, tantargyak[index])

    tantargyak = [„matek”, „töri”, „magyar”, „biológia”, „infó”]
    for index, tantargy in enumerate(tantargyak):
        print(index, tantargy)
           

    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
      zenekarok = [„Ed Sheeran”, „Lost Frequencies”, „Yungblud”, „Imagine Dragons”]
      for zenekar in zenekarok:
          print(„Most ezt hallgatnám: „, zenekar)

      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
        for szam in range(10):
            print(szam)

         

        for szam in range(3, 13):
            print(szam)

         

        for szam in range(0, 21, 2):
            print(szam)
               

        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
          for szam in range(10, 0, 1):
              print(szam)
                 

          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
            filmek = [„Itt érzem magam otthon”, „Hadik”, „Toxikoma”, „Seveled”, „Aranyélet”]

             

            for index, film in enumerate(filmek):
                print(index, film)
                   

            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
            filmek = [„Itt érzem magam otthon”, „Hadik”, „Toxikoma”, „Seveled”, „Aranyélet”]

             

            for index, film in enumerate(filmek):
                print(index, film)
                   

            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
            teendok = [„tanulni”, „mosni”, „rendet rakni”, „kutyát sétáltatni”, „bevásárolni”, „olvasni”]
            for index, teendo in enumerate(teendok, start=1):
                print(index, teendo)

            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
              lista = [„aelem”, „belem”, „celem”, „delem”, „eelem”, „felem”]
              for index in range(len(lista)):
                  if index % 2 == 0:
                      print(index, lista[index])
                     

              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
              lista = [„bögre”, „kulcs”, „autó”, „mozi”, „bicikli”]
              for index in range(len(lista)):
                  if len(lista[index]) < 5:
                      print(index, lista[index])
                     

              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 for ciklussal
              • í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
                lista = []
                darab = 0

                while darab < 5:
                    szo = input(„Adj meg egy szot: „)
                    lista.append(szo)
                    darab += 1

                for szo in lista:
                    print(szo)

                for index in range(len(lista)):
                    print(index, lista[index])

                for index, szo in enumerate(lista):
                    print(index, szo)
                       
                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: