Python és adattudomány alapok · Lecke 03

Adatszerkezetek (lista, dict, halmaz) és függvények

Az adatokat gyűjteményekben tároljuk. Ebben a leckében a lista, a tuple, a halmaz és a szótár szerepét nézzük meg, a lista comprehension tömör eszközét, végül a függvényeket, amelyek a logikát egy néven fogják össze.

Vissza a tananyaghoz


Négy adatszerkezet, négy feladat

Az adatelemzésben ritkán dolgozunk egyetlen értékkel. Az adatokat gyűjteményekben tároljuk, és a Python négy beépített adatszerkezete a leggyakoribb. A lista rendezett és módosítható, a tuple rendezett de nem módosítható, a halmaz egyedi elemek rendezetlen gyűjteménye, a szótár pedig kulcs és érték párokat tárol. Mindegyiknek megvan a maga tipikus szerepe.

lista rendezett módosítható [1, 2, 3] tuple rendezett nem módosítható (1, 2, 3) halmaz egyedi elemek rendezetlen {1, 2, 3} szótár kulcs és érték pár {"a": 1}
A négy beépített adatszerkezet és a jelölésük. A szögletes zárójel listát, a kerek tuple-t, a kapcsos zárójel halmazt vagy szótárt jelöl.

Lista

A lista a leggyakoribb gyűjtemény. Szögletes zárójelben, vesszővel elválasztva soroljuk fel az elemeit, és az elemekhez a nullától induló index alapján férünk hozzá. A lista módosítható, elemet az append metódussal fűzünk a végére, az insert egy adott pozícióba szúr be, a remove pedig érték szerint töröl. A sort helyben rendezi a listát.

arak = [2990, 1490, 3990]
arak.append(990)          # a vegere fuz
print(arak[0])            # 2990  (elso elem)
print(arak[-1])           # 990   (utolso elem)
print(arak[0:2])          # [2990, 1490]  (szeleteles)

arak.sort()
print(arak)               # [990, 1490, 2990, 3990]

A lista indexelhető és szeletelhető. Az index nullától indul, a negatív index a vég felől számol.


Lista comprehension

A Python egyik legjellegzetesebb eszköze a lista comprehension. Egyetlen tömör kifejezéssel új listát állít elő egy meglévő sorozat elemeiből, és egy feltétellel szűrni is lehet. Ugyanez for ciklussal is megírható, de a comprehension rövidebb és az adatelemzésben nagyon gyakori.

szamok = [1, 2, 3, 4, 5]
negyzetek = [x**2 for x in szamok]
print(negyzetek)          # [1, 4, 9, 16, 25]

parosak = [x for x in szamok if x % 2 == 0]
print(parosak)            # [2, 4]

A lista comprehension egy sorozatból új listát épít, opcionális szűrési feltétellel.


Szótár

A szótár kulcs és érték párokat tárol. A kulcs alapján gyorsan elérjük a hozzá tartozó értéket, ezért ideális névvel azonosított adatokhoz. Kapcsos zárójelben adjuk meg, a kulcsot és az értéket kettőspont választja el. A kulcsok bejárása és a párok végigolvasása az items metódussal történik. Az in operátorral pedig ellenőrizhető, hogy egy kulcs szerepel-e a szótárban.

termek = {"nev": "kave", "ar": 2990, "raktaron": True}
print(termek["ar"])       # 2990
termek["ar"] = 3190       # ertek modositasa
print("nev" in termek)    # True

for kulcs, ertek in termek.items():
    print(kulcs, ertek)   # nev kave / ar 3190 / raktaron True

A szótár kulcs alapján ad hozzáférést. Az items metódus a kulcs és érték párokat járja be.


Tuple és halmaz

A tuple olyan, mint a lista, de nem módosítható, ezért állandó, összetartozó értékek tárolására jó, például egy koordinátára. A halmaz egyedi elemeket tárol rendezetlenül, így kiválóan alkalmas duplikátumok kiszűrésére és a gyors tartalmazás vizsgálatra. A halmazon uniót, metszetet és különbséget is lehet képezni.

pont = (47.5, 19.0)       # tuple, nem modosithato
x, y = pont               # kicsomagolas
print(x)                  # 47.5

latogatok = [3, 3, 5, 8, 8, 8]
egyedi = set(latogatok)   # duplikatumok kiszurese
print(egyedi)             # {8, 3, 5}
print(8 in egyedi)        # True

A tuple kicsomagolható több változóba. A halmaz eltávolítja a duplikátumokat és gyors tartalmazás vizsgálatot ad.


Függvények

A függvény egy néven nevezett, újrahasználható kódrészlet. A def kulcsszóval hozzuk létre, zárójelben soroljuk fel a paramétereit, a return utasítás pedig visszaadja az eredményt. A paramétereknek alapértelmezett értéket is adhatunk, így a hívó elhagyhatja őket. A függvények teszik a kódot áttekinthetővé, mert a logikát egyszer írjuk meg és többször hívjuk.

def brutto_ar(netto, afa=0.27):
    return netto * (1 + afa)

print(brutto_ar(1000))        # 1270.0  (alapertelmezett afa)
print(brutto_ar(1000, 0.05))  # 1050.0  (megadott afa)

A def függvényt hoz létre, a return visszaadja az eredményt, a paraméter pedig kaphat alapértelmezett értéket.

4

Válaszd a feladathoz illő szerkezetet. Sorrendhez és módosításhoz listát, állandó értékhez tuple-t, egyediséghez halmazt, névvel azonosított adathoz szótárt. A függvények pedig a logikát fogják össze egy néven.


← Előző lecke Következő lecke →

Workshop

AI Transformation Day

Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.

Érdekel a program →