Python lista rendezése – sort(), sorted(), reverse() és count() használata
A Python listákkal végzett munka során gyakran szükség van az elemek rendezésére, a sorrend megfordítására vagy annak meghatározására, hogy egy adott érték hányszor szerepel a listában. A Python ehhez több egyszerű, beépített metódust és függvényt is biztosít.
Ebben az útmutatóban megnézzük, hogyan működik a Python lista rendezése a sort() és a sorted() segítségével, hogyan rendezhetjük az elemeket fordított sorrendbe, mire használható a reverse(), és hogyan számolhatjuk meg egy adott elem előfordulásait a count() metódussal.
A példákat lépésről lépésre nézzük végig, így azt is látni fogod, mikor melyik megoldást érdemes használni, és mi a különbség az elsőre hasonlónak tűnő listaműveletek között.
Python lista rendezése ábécé szerint a sort() metódussal
A sort() metódussal egy Python lista elemeit közvetlenül rendezhetjük. Szöveges elemek esetén alapértelmezés szerint növekvő, vagyis ábécé szerinti sorrendet kapunk.
Fontos, hogy a sort() az eredeti listát módosítja. Nem készít külön új listát, hanem ugyanannak a listának változtatja meg az elemeinek sorrendjét.
Az alábbi kódrészlet segít nekünk ebben:
nationality = ["magyar", "osztrák", "német", "holland", "lengyel", "kínai", "arab"]
nationality.sort()
print(nationality)
Lekérdezés utáni eredmény:
['arab', 'holland', 'kínai', 'lengyel', 'magyar', 'német', 'osztrák']
Mi történik a kódban?
Először létrehozunk egy nationality nevű listát, amely különböző nemzetiségeket tartalmaz. Ezután meghívjuk rajta a sort() metódust:
nationality.sort()
A Python ekkor átrendezi a lista elemeit ábécé szerinti sorrendbe. Amikor a print(nationality) segítségével kiírjuk a listát, már a módosított sorrendet látjuk.
Mivel a sort() az eredeti listát módosítja, a korábbi sorrend ezután már nem marad meg a nationality változóban.
Python lista rendezése fordított sorrendben – sort(reverse=True)
A sort() metódus alapértelmezés szerint növekvő sorrendbe rendezi a lista elemeit. Ha viszont fordított sorrendet szeretnénk, használhatjuk a reverse=True paramétert.
Szöveges elemek esetén ez fordított ábécé szerinti sorrendet jelent. Számoknál ugyanez a beállítás csökkenő sorrendbe rendezi az értékeket.
nationality = ["magyar", "osztrák", "német", "holland", "lengyel", "kínai", "arab"]
# Lista lekérdezése normál sorrendben - az előző példa eredményét mutatja
nationality.sort()
print(nationality)
# Lista lekérdezése fordított ábécé sorrendben
nationality.sort(reverse=True)
print(nationality)
Output:
['arab', 'holland', 'kínai', 'lengyel', 'magyar', 'német', 'osztrák']
['osztrák', 'német', 'magyar', 'lengyel', 'kínai', 'holland', 'arab']
Mit jelent a reverse=True?
A reverse paraméter azt szabályozza, hogy a rendezés normál vagy fordított sorrendben történjen. Alapértelmezett értéke False, ezért a sort() önmagában növekvő sorrendet használ.
Amikor ezt írjuk:
nationality.sort(reverse=True)
a Python ugyanúgy rendezi az eredeti listát, mint a sima sort() esetében, de a kapott sorrendet megfordítja.
Fontos, hogy itt továbbra is rendezés történik. Ez nem ugyanaz, mint a később bemutatott reverse() metódus, amely nem rendezi az elemeket, hanem egyszerűen megfordítja az aktuális sorrendjüket.
sort() vagy sorted() – mi a különbség?
A sort() és a sorted() elsőre nagyon hasonlónak tűnhet, mert mindkettővel rendezhetünk adatokat Pythonban. A legfontosabb különbség azonban az, hogy másképp kezelik az eredeti listát.
A sort() metódus közvetlenül az eredeti listát módosítja. A sorted() függvény ezzel szemben egy új, rendezett listát hoz létre, miközben az eredeti lista változatlan marad.
szamok = [5, 2, 8, 1]
rendezett_szamok = sorted(szamok)
print(rendezett_szamok)
print(szamok)
Eredmény:
[1, 2, 5, 8]
[5, 2, 8, 1]
Mikor használjuk a sort() és mikor a sorted() megoldást?
Ha nincs szükségünk az eredeti sorrendre, és nyugodtan módosíthatjuk a listát, akkor a sort() egyszerű megoldás.
Ha viszont szeretnénk megtartani az eredeti listát is, akkor a sorted() általában jobb választás, mert külön rendezett eredményt ad vissza.
Például:
– lista.sort() → az eredeti lista sorrendje megváltozik
– sorted(lista) → egy új rendezett listát kapunk, az eredeti változatlan marad
Gyakori hiba: a sort() nem ad vissza egy új rendezett listát. Emiatt a rendezett = lista.sort() megoldással a rendezett változó értéke None lesz. Ha új listára van szükségünk, használjuk inkább a sorted() függvényt.
Python lista megfordítása a reverse() metódussal
A reverse() metódus nem rendezi a lista elemeit, hanem egyszerűen megfordítja a jelenlegi sorrendjüket.
Ez azt jelenti, hogy az utolsó elem kerül az első helyre, az utolsó előtti a másodikra, és így tovább.
A kódunk így néz ki:
nationality = ["magyar", "osztrák", "német", "holland", "lengyel", "kínai", "arab"]
# Lista lekérdezése normál sorrendben
nationality.sort()
print(nationality)
# Lista lekérdezése fordított ábécé sorrendben a reverse() függvénnyel
nationality.reverse()
print(nationality)
Eredmény a konzolban:
['arab', 'holland', 'kínai', 'lengyel', 'magyar', 'német', 'osztrák']
['osztrák', 'német', 'magyar', 'lengyel', 'kínai', 'holland', 'arab']
Mi a különbség a reverse() és a sort(reverse=True) között?
A két megoldás eredménye néha hasonlónak tűnhet, de teljesen mást csinálnak.
A sort(reverse=True) először rendezi a lista elemeit, majd fordított sorrendben adja vissza őket.
A reverse() ezzel szemben nem vizsgálja az elemek értékét, csak megfordítja azt a sorrendet, amelyben éppen szerepelnek.
Például:
szamok = [5, 1, 9, 3]
szamok.reverse()
print(szamok)
Eredmény:
[3, 9, 1, 5]
Látható, hogy a számok nem kerültek csökkenő sorrendbe. A Python egyszerűen visszafelé olvasta az eredeti listát.
Python lista elemeinek megszámolása a count() metódussal
A count() metódus megmutatja, hogy egy adott érték hányszor szerepel egy listában.
Ez különösen hasznos akkor, ha ismétlődő elemekkel dolgozunk, és gyorsan szeretnénk megszámolni egy konkrét érték előfordulásait.
Kód “szkript” - ünk:
nationality = ["magyar", "osztrák", "német", "holland", "lengyel", "kínai", "arab"]
# Lista kiíratása
print(nationality)
# Lista elemeinek megszámlálása
print(len(nationality))
# Lista elemeinek megszámlálása változó létrehozásával (opcionális)
counted_nationality = len(nationality)
print(counted_nationality)
Eredmény:
['magyar', 'osztrák', 'német', 'holland', 'lengyel', 'kínai', 'arab']
7
7
Hogyan működik a count()?
A count() zárójelében azt az értéket adjuk meg, amelynek az előfordulásait meg szeretnénk számolni.
szamok = [1, 2, 3, 2, 4, 2, 5]
darab = szamok.count(2)
print(darab)
Eredmény:
3
A 2 érték háromszor szerepel a listában, ezért a count() eredménye 3.
Ha egy keresett elem egyáltalán nem található meg a listában, akkor a count() eredménye 0 lesz.
A count() mindig egy konkrét érték előfordulásait számolja meg. Nem a lista teljes elemszámát adja vissza. Ha arra vagyunk kíváncsiak, hány elem található összesen egy listában, arra a len() függvényt használjuk.
Gyakori hibák Python-listák rendezésekor
A Python listák rendezése egyszerűnek tűnik, de kezdőként néhány apró különbség könnyen félreértéshez vezethet. Nézzük meg a leggyakoribb hibákat.
1. print(lista.sort()) használata
A sort() az eredeti listát módosítja, de nem ad vissza új listát. Ezért az alábbi kód eredménye None lesz:
szamok = [3, 1, 2]
print(szamok.sort())
Helyette először rendezzük a listát, majd külön írjuk ki:
szamok.sort()
print(szamok)
2. A reverse() összekeverése a rendezéssel
A reverse() nem rendezi a lista elemeit. Csak megfordítja az aktuális sorrendet.
Ha csökkenő sorrendet szeretnénk, akkor inkább ezt használjuk:
szamok.sort(reverse=True)
3. Az eredeti lista véletlen módosítása
A sort() és a reverse() közvetlenül módosítják az eredeti listát. Ha később még szükségünk van az eredeti sorrendre, akkor célszerű a sorted() függvényt használni.
eredeti = [4, 1, 3, 2]
rendezett = sorted(eredeti)
print(eredeti)
print(rendezett)
4. Különböző típusú elemek rendezése
A Python nem tud minden esetben egymással összehasonlítani különböző adattípusokat. Például számokat és szövegeket tartalmazó lista rendezése hibát okozhat:
adatok = [3, "alma", 1]
adatok.sort()
Ha megértjük a különbséget a sort(), sorted() és reverse() működése között, a legtöbb kezdői hibát könnyen elkerülhetjük.
ÁTTEKINTÉS
Ebben a részben megtanultuk a Python listák legfontosabb rendezési és sorrendkezelési műveleteit. A sort() metódussal közvetlenül rendezhetjük az eredeti listát, míg a sorted() függvény egy új, rendezett listát hoz létre.
Megnéztük azt is, hogyan használható a sort(reverse=True) fordított rendezéshez, és miben különbözik ettől a reverse(), amely egyszerűen megfordítja a lista aktuális sorrendjét.
Végül a count() segítségével megtanultuk megszámolni, hogy egy adott érték hányszor fordul elő a listában.
Összefoglaló táblázat
Eszköz
Mire való?
Módosítja az eredeti listát?
Visszaad új listát?
sort()
növekvő/ábécés rendezés
Igen
Nem
sorted()
rendezett másolat készítése
Nem
Igen
sort(reverse=True)
fordított rendezés
Igen
Nem
reverse()
aktuális sorrend megfordítása
Igen
Nem
count()
adott érték előfordulásainak száma
Nem
Nem
len()
lista teljes elemszáma
Nem
Nem
Feladat
Gyakorold a Python listák rendezését!
- Készíts egy listát legalább öt olyan pedagógus nevével, akik nagy hatással voltak rád. Az egyik nevet szándékosan írd bele kétszer.
- A sorted() segítségével készíts egy új, ábécé szerint rendezett listát, majd írasd ki az eredeti és a rendezett listát is. Figyeld meg, hogy az eredeti lista nem változott meg.
- Ezután rendezd az eredeti listát a sort() metódussal ábécé szerinti sorrendbe.
- A sort(reverse=True) segítségével rendezd a neveket fordított ábécé szerinti sorrendbe.
- Próbáld ki a reverse() metódust is, és figyeld meg, miben különbözik a rendezéstől.
- A count() segítségével számold meg, hányszor szerepel a listában az a név, amelyet kétszer adtál hozzá.
- Végül a len() függvénnyel írasd ki, hány elem található összesen a listában.
Tipp: minden művelet után írasd ki a lista aktuális állapotát a print() segítségével. Így könnyebben megfigyelheted, hogy az egyes metódusok hogyan változtatják meg a listát.
Megoldás lépésről lépésre – Python listaműveletek
Az alábbi megoldásban ugyanazon a listán próbáljuk ki a sorted(), sort(), sort(reverse=True), reverse(), count() és len() működését. Érdemes minden lépés után megfigyelni, hogyan változik – vagy éppen nem változik – az eredeti lista.
Feladat:
pedagogusok = [
"Kovács Anna",
"Nagy Péter",
"Szabó Éva",
"Tóth Gábor",
"Varga Júlia",
"Kovács Anna"
]
# 1. Új, rendezett lista létrehozása sorted() segítségével
rendezett_pedagogusok = sorted(pedagogusok)
print("Eredeti lista:")
print(pedagogusok)
print("\nRendezett új lista:")
print(rendezett_pedagogusok)
# 2. Az eredeti lista rendezése sort() segítségével
pedagogusok.sort()
print("\nAz eredeti lista sort() után:")
print(pedagogusok)
# 3. Fordított ábécé szerinti rendezés
pedagogusok.sort(reverse=True)
print("\nFordított ábécé szerinti sorrend:")
print(pedagogusok)
# 4. Az aktuális sorrend megfordítása
pedagogusok.reverse()
print("\nA lista reverse() után:")
print(pedagogusok)
# 5. Egy név előfordulásainak megszámolása
darab = pedagogusok.count("Kovács Anna")
print("\nKovács Anna ennyiszer szerepel a listában:")
print(darab)
# 6. A lista teljes elemszáma
elemek_szama = len(pedagogusok)
print("\nA lista elemeinek száma:")
print(elemek_szama)
Output:
Eredeti lista:
['Kovács Anna', 'Nagy Péter', 'Szabó Éva', 'Tóth Gábor', 'Varga Júlia', 'Kovács Anna']
Rendezett új lista:
['Kovács Anna', 'Kovács Anna', 'Nagy Péter', 'Szabó Éva', 'Tóth Gábor', 'Varga Júlia']
Az eredeti lista sort() után:
['Kovács Anna', 'Kovács Anna', 'Nagy Péter', 'Szabó Éva', 'Tóth Gábor', 'Varga Júlia']
Fordított ábécé szerinti sorrend:
['Varga Júlia', 'Tóth Gábor', 'Szabó Éva', 'Nagy Péter', 'Kovács Anna', 'Kovács Anna']
A lista reverse() után:
['Kovács Anna', 'Kovács Anna', 'Nagy Péter', 'Szabó Éva', 'Tóth Gábor', 'Varga Júlia']
Kovács Anna ennyiszer szerepel a listában:
2
A lista elemeinek száma:
6
Mit érdemes megfigyelni a megoldásban?
A sorted(pedagogusok) létrehoz egy új, ábécé szerint rendezett listát, miközben az eredeti pedagogusok lista változatlan marad.
A pedagogusok.sort() már közvetlenül az eredeti listát rendezi át. A sort(reverse=True) ugyanezt fordított ábécé szerinti sorrendben végzi el.
A reverse() ezután nem végez új rendezést: egyszerűen megfordítja azt a sorrendet, amelyben az elemek éppen vannak.
A count(“Kovács Anna”) eredménye 2, mert ezt a nevet kétszer helyeztük el a listában. A len(pedagogusok) pedig 6 értéket ad vissza, mert összesen hat elem található a listában.
Mészáros Csaba
Alapító · Python Project
„Pythonban gondolkodni – lépésről lépésre.”
💡 Innen hogyan érdemes továbbhaladnod?
A Python listák rendezése és kezelése alapvető készség, mert később szinte minden komolyabb programban találkozol majd listákkal, ciklusokkal és adatfeldolgozással.
Ha már érted a sort(), sorted(), reverse(), count() és len() működését, akkor jó alapod van ahhoz, hogy összetettebb feladatokat és saját programokat is elkezdj építeni.
A Python Start tréningben az alapoktól haladunk tovább, lépésről lépésre:
✓ rövid, érthető videóleckékkel
✓ gyakorlati Python-feladatokkal
✓ megoldásokkal és magyarázatokkal
✓ fokozatosan felépített tananyaggal
👉 Ha még csak most ismerkedsz a Pythonnal, kezdd az ingyenes mini-kurzussal. Ha már szeretnél strukturáltan továbbhaladni és többet gyakorolni, nézd meg a Python Start tréninget.
Videók + feladatok + megoldások + garancia:
Kezdőknek – rövid leckék, mini feladatok e-mailben: