Python IV. lecke: Listakezelés haladóknak - Kódolj rövidebben és okosabban!



Az előző részekben már megismerkedtünk a listák alapjaival és használtuk is őket. Most azonban egy szinttel feljebb lépünk, és megnézünk néhány olyan Python-specifikus megoldást, amivel sokkal gyorsabban és elegánsabban kezelheted az adataidat.

(Megjegyzés: A példákban látható kódokat Linux Mint alatt írom, de a Python kód pontosan ugyanúgy működik Windows vagy macOS rendszeren is, legfeljebb a betűtípus tér el egy picit.)

1. A min(), max() és sum() függvények ereje

Képzeljünk el egy tíz elemet tartalmazó listát (például az 1-től 10-ig terjedő számokat). Sok programozási nyelvben, mint a C vagy a Java, ha meg akarod keresni egy lista legkisebb vagy legnagyobb elemét, ciklust kell írnod, amely végigmegy az összes elemen, és folyamatosan frissíti az aktuális minimum vagy maximum értékét.

A Pythonban erre beépített függvények állnak rendelkezésre:

• Legnagyobb elem: max(lista) - visszaadja a lista legnagyobb elemét.
• Legkisebb elem: min(lista) - visszaadja a lista legkisebb elemét.
• Elemek összege: sum(lista) - összeadja a lista összes numerikus elemét.

lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(max(lista))
print(min(lista))
print(sum(lista))


Ezek a beépített függvények jelentősen lerövidítik a kódot, és sokkal áttekinthetőbbé teszik a programot, különösen nagyobb feladatok vagy vizsgák során.

2. Listakomprehenzió (List Comprehension)

A listakomprehenzió a Python egyik legismertebb és leghasznosabb nyelvi eleme. Segítségével egy teljes ciklust és feltételvizsgálatot egyetlen sorban írhatunk le.

Hagyományos megoldásként létrehoznánk egy üres listát, végigiterálnánk az eredeti listán egy for ciklussal, if feltétellel megvizsgálnánk az elemeket, majd az append() metódussal hozzáadnánk a megfelelő értékeket. Ez általában 4-5 sor kódot jelent.

A listakomprehenzió általános szintaxisa:

uj_lista = [kifejezés for elem in lista if feltétel]

Például a páros számok kiválogatása:

paros = [szam for szam in lista if szam % 2 == 0]

A szögletes zárójelben először azt adjuk meg, hogy mi kerüljön az új listába (szam), ezután következik a ciklus (for szam in lista), végül pedig a feltétel (if szam % 2 == 0). Mivel közvetlenül egy új listát hozunk létre, nincs szükség az append() metódus használatára.

Ha a kiválasztott elemeket módosítani is szeretnénk, azt mindig a ciklus előtt kell megadni:

duplazott = [szam * 2 for szam in lista if szam % 2 == 0]

Fontos szabály, hogy a logikai feltétel (if) mindig a listakomprehenzió legvégén helyezkedik el.