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 – sort(), sorted() és reverse() illusztráció

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!

  1. 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.

  2. 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.

  3. Ezután rendezd az eredeti listát a sort() metódussal ábécé szerinti sorrendbe.

  4. A sort(reverse=True) segítségével rendezd a neveket fordított ábécé szerinti sorrendbe.

  5. Próbáld ki a reverse() metódust is, és figyeld meg, miben különbözik a rendezéstől.

  6. 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á.

  7. 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 - Python Project

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: