Összetett adattípusok a Pythonban:
- lista: Dinamikusan változó adatszerkezet (gyűjtemény). Rendezett, indexelt, az elemek módosíthatók, bővíthetők, törölhetők, lehetnek benne egyforma elemek.
- szótár: rendezett és változtatható gyűjtemény. Elempárokból áll, azaz egy kulcsból és a hozzá tartozó értékből. A kulcsok értéke egyedi, tehát nem lehet több azonos kulcs.
- tuple: olyan gyűjtemény, amely rendezett és megváltoztathatatlan. Lehetővé teszi az elemek duplikálását. Nem lehet hozzáadni új elemet, törölni belőle, vagy módosítani az elemeit.
- halmaz: olyan gyűjtemény, amely rendezetlen, nem változtatható és nem indexelt. Nem lehetnek benne duplikált elemek. Új elemet lehet hozzáadni, és lehet belőle elemeket törölni.
Tuple
A tuple adattípus is összetett adattípus. Indexelt, lehet benne ismétlődő adat. Nem lehet törölni belőle elemet, és nem lehet hozzáadni újat sem! Tuple-t az elemeinek felsorolásával, vagy a tuple függvénnyel lehet létrehozni. A listákhoz hasonlóan a tuple is indexelt, az első elem a 0. indexű, az utolsó a -1. A tuple elemszáma a len függvénnyel lekérdezhető. A szokásos in/not in segítségével eldönthető, szerepel-e benne a megadott elem. A tuple elemei is bejárhatóak for és while ciklussal. A tuple törölhető a del kulcsszóval. A count függvénnyel meg tudjuk nézni, a keresett elem hányszor szerepel a tuple-ben. Az index függvény visszadja a keresett elem indexét.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# tuple létrehozása elemek felsorolásával ----- tuple_szamok = (1,2,3,4,5) print(type(tuple_szamok)) print(tuple_szamok) # tuple tartalma # tuple létrehozása ----- betuk = tuple(["a","b","c","d","b","c"]) # tuple első és utolsó eleme ----- print(betuk[0]) print(betuk[-1]) # in vagy not in hasonlóan a listákhoz ----- print("ax" in betuk) #kimenet: false napok = ("hétfő", "kedd", "szerda") if "péntek" in napok: print("A keresett nap benne van a tuple-ban!") else: print("Nincs benne a tuple-ben a keresett elem!") # hányszor szerepel a megadott elem a tuple-ben? ----- db = betuk.count("b") print(db) # elemek bejárása - for cilus for i in betuk: print(i) # Mi a keresett elem indexe? (Az első előfordulás indexét adja vissza) ----- ind = betuk.index("b") print(ind) # elemek bejárása index szerint ----- for i in range(len(betuk)): print(betuk[i]) #elemek bejárása while ciklussal ----- i = 0 while i < len(betuk): print(betuk[i]) i = i + 1 # többes értékadás, becsomagolás ----- pozicio = 10, 20 print(type(pozicio)) # kicsomagolás - pl: tároljuk el a pozicio értékeit x és y változóban ----- x = pozicio[0] y = pozicio[1] #röviden: x,y = pozicio # tuple-ök egyesítése ----- zoldsegek = ("répa","retek","petrezselyem") novenyek = gyumolcsok + zoldsegek print(novenyek) # tuple duplázása ----- zoldsegek = zoldsegek * 2 print(zoldsegek) |
Bár a tuple elemei nem módosíthatóak, egy kis trükközéssel mégis megoldható új elem felvétele, elem módosítása, törlése… Ehhez a tuple-t át lehet alakítani listává, majd vissza tuple-nek. Tehát van egy hetkoznapok nevű tuple, amit elmentünk egy s nevű listába. A listába a keddi nap értékét felülírjuk, hozzáadunk egy új elemet, majd elmentjük tuple-ként.
1 2 3 4 5 6 |
hetkoznapok = ("hétfő", "ked", "szerda") s = list(hetkoznapok) s[1] = "kedd" s.append(csütörtök) hetkoznapok = tuple(s) print(hetkoznapok) |
Halmazok (Set)
A halmaz: rendezetlen, nem indexelt, nem lehet benne ismétlődő elem, az elemei nem módosíthatóak. Új elemmel lehet bővíteni (add), és elemeket lehet törölni belőle (remove, discard, pop)! Ha nem létezik a megadott érték törlésnél, akkor a remove() hibaüzenetet dob a discard() nem. Elemet véletlenszerűen a pop metódussal lehet törölni.
Gyakorlatilag ha többször iratjuk ki ugyanannak a halmaznak az elemeit azt fogjuk tapasztalni, hogy változik (véletlen) a sorrendjük. Egy halmazhoz hozzá lehet adni másik halmazt, szótárt, tuple-t, listát is az update metódussal.
A halmaz elemeit a clear() metódussal lehet törölni, magát az egész halmazt a del() metódussal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# halmaz létrehozása elemeinek felsorolásával ----- gyumolcsok = { "alma", "narancs", "körte", "banán","lime"} print(type(gyumolcsok)) print(gyumolcsok) # halmaz létrehozása a set függvénnyel szinek = set(( "piros", "sárga", "zöld", "lime")) print(szinek) # add - elem hozzáadása ----- szinek.add("lila") print(szinek) # remove -elem törlése ----- szinek.remove("piros") # pop - elem eltávolítása, nem lehet megadni melyiket, véletlenszerű ----- print(szinek.pop()) print(szinek) # update - halmaz kibővítése egy másik halmaz elemeivel ----- tropusi_gyumolcsok = { "ananász", "papaya"} gyumolcsok.update(tropusi_gyumolcsok) # megadott elem szerepel-e a halmazban? in , not in ----- print("fekete" in szinek) # halmaz elemeinek száma: len ----- print(len(szinek)) # halmaz műveletek ----- # EGYESÍTÉS | union: print(szinek | gyumolcsok) print(szinek.union(gyumolcsok)) egyesitett = szinek.union(gyumolcsok) #mentjük egy új halmazba # METSZET & intersection print(szinek & gyumolcsok) print(szinek.intersection(gyumolcsok)) # KÜLÖNBSÉG - difference print(szinek - gyumolcsok) print(szinek.difference((gyumolcsok))) # SZIMMETRIKUS DIFERENCIA ^ print(szinek ^ gyumolcsok) print(szinek.difference(gyumolcsok)) |