Ö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.
# 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.
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.
# 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))