Összetett adatszerkezetek
Részletesebb leírás az adatszerkezetekről
AdatszerkezetekhezTagolás
l = [1, 'alma', 7.5, True, 'körte', 6]
print(l)
print(*l)
print(*l, sep=' - ')
[1, 'alma', 7.5, True, 'körte', 6]
1 alma 7.5 True körte 6
1 - alma - 7.5 - True - körte - 6
Lista adatszerkezetet hoz létre, amelynek különböző típusú elemeket adunk hozzá, majd a listát kiírjuk a képernyőre.
A print(l) parancs kiírja a teljes listát a képernyőre, a benne lévő összes elemmel. Az eredmény a következő lenne: [1, ‘alma’, 7.5, True, ‘körte’, 6].
A print(*l) parancs használja a * operátort, amely szétszedi a lista elemeit, és azokat külön-külön adja át a print() függvénynek, ami aztán kiírja azokat a képernyőre. Az eredmény így a következő lenne: 1 alma 7.5 True körte 6. Megjegyzendő, hogy az első és utolsó elem között nincs szóköz, mivel az első elem és az első szóköz között nincs vessző.
A print(*l, sep=’ – ‘) parancs szintén használja a * operátort, hogy szétszedje a lista elemeit, majd azokat a ‘-‘ karakterrel elválasztva adja át a print() függvénynek. Az eredmény így a következő lenne: 1 – alma – 7.5 – True – körte – 6. A sep argumentum használatával beállítjuk, hogy milyen karaktert használjon elválasztónak az elemek között, amely alapértelmezetten a szóköz karakter.
l = [1, 'alma', 7.5, True, 'körte', 6] # egy lista létrehozása
print(l[1]) # a lista második elemét írja ki
print(l[-2]) # a lista utolsó előtti elemét írja ki
print(l[1:4]) # a lista második, harmadik és negyedik elemét írja ki
print(l[-3:-1]) # a lista utolsó előtti és utolsó elemét írja ki
print(l[:2]) # az első két elemet írja ki a listából
print(l[3:]) # a negyedik és az utána következő összes elemet írja ki a listából
print(l[1:5:2]) # a lista második, negyedik és hatodik elemét írja ki
print(len(l)) # a lista elemeinek a számát írja ki
print(type(l)) # a lista típusát írja ki
alma
körte
['alma', 7.5, True]
[True, 'körte']
[1, 'alma']
[True, 'körte', 6]
['alma', True]
6
l = [1, 'alma', 7.5, True, 'körte', 6] # egy lista létrehozása
l[4] = 'barack' #lista elemének értékének megváltoztatása
print(l)
l.append(123) #elem hozzáadás a listához
print(l)
l.extend(['A', 32]) #kibővíti a listát
print(l)
[1, 'alma', 7.5, True, 'barack', 6]
[1, 'alma', 7.5, True, 'barack', 6, 123]
[1, 'alma', 7.5, True, 'barack', 6, 123, 'A', 32]
l.insert(3, 99) #3.helyre beszúrja az adatot
print(l)
[1, 'alma', 7.5, 99, True, 'barack', 6, 123, 'A', 32]
l.remove(123) #eltávolítja a 123 adatot
print(l)
[1, 'alma', 7.5, 99, True, 'barack', 6, 'A', 32]
print(l.pop(1)) # kiírja majd eltávolítja az elemet
alma
Beépített metódusok
Az alábbi kód a list
típusú változók néhány beépített metódusát mutatja be:
s = [56, 32, 865, 1, 67, 99, 43, 23, 6] # egy lista létrehozása
s.reverse() # megfordítja a lista sorrendjét
print(s) # kiírja a megfordított listát
s.sort() # rendezni kezdi a listát növekvő sorrendbe
print(s) # kiírja a rendezett listát
s.sort(reverse=True) # megfordítja a lista sorrendjét, ezzel csökkenő sorrendbe rendezve
print(s) # kiírja a megfordított és rendezett listát
del s[1] # eltávolítja a lista második elemét
print(s) # kiírja a lista módosított változatát
[6, 23, 43, 99, 67, 1, 865, 32, 56]
[1, 6, 23, 32, 43, 56, 67, 99, 865]
[865, 99, 67, 56, 43, 32, 23, 6, 1]
[865, 67, 56, 43, 32, 23, 6, 1]
A reverse()
metódus megfordítja a lista sorrendjét, míg a sort()
metódus alapértelmezetten növekvő sorrendbe rendez. Ha meg akarjuk fordítani a sorrendet, a sort(reverse=True)
parancsot használhatjuk.
Az del
kulcsszó eltávolítja a megadott indexű elemet a listából. Itt a s[1]
, azaz a lista második eleme kerül eltávolításra.
Tuple változók
Az alábbi kód a tuple
típusú változók használatát mutatja be:
t = (1, 3, 54, 4, 8, 24) # egy tuple létrehozása
print(t) # kiírja a tuple elemeit
print(*t) # kiírja a tuple elemeit szóközzel elválasztva
print(type(t)) # kiírja a változó típusát
(1, 3, 54, 4, 8, 24)
1 3 54 4 8 24
A tuple
típusú változók hasonlóak a list
típusú változókhoz, azonban azok nem módosíthatóak. Az elemek sorrendjét és értékét nem lehet megváltoztatni. A tuple-t zárójelbe írjuk, míg a list-t szögletes zárójelekbe.
A print(*t)
parancs a tuple elemeit szóközzel elválasztva írja ki. A type(t)
paranccsal pedig kiírjuk a változó típusát, amely itt tuple
.
Set változók - 1. Példa
Az alábbi kód a set
típusú változók használatát mutatja be:
h = {10, 12, 32, 45, 'a'} # egy set létrehozása
print(h) # kiírja a set elemeit
be = int(input("Kérek egy számot: ")) # bekér egy számot
h.add(be) # hozzáadja a set-hez a bekért számot
print(h) # kiírja a set elemeit
print(len(h)) # kiírja a változó hosszát
print(type(h)) # kiírja a változó típusát
{32, 'a', 10, 12, 45}
Kérek egy számot: 23
{32, 'a', 10, 12, 45, 23}
6
A set
típusú változók olyan kollekciók, amelyekben az elemek egyszer fordulnak elő, és nincs megadott sorrendjük. A set-ek közötti műveletek (metszet, unió, stb.) nagyon hatékonyak, és hasznosak lehetnek több adathalmaz összehasonlításához.
A print(len(h))
parancs kiírja a változó hosszát, vagyis a set-ben lévő elemek számát. A type(h)
paranccsal pedig kiírjuk a változó típusát, amely itt set
. A h.add(be)
parancs pedig hozzáadja a bekért értéket a set-hez.
Set változók - 2. Példa
h1 = set('almafa')
h2 = set('jonatán')
print(*h1) # látszik hogy minden karakterből csak 1 lehet benne
print(*h2)
print(h1-h2) # csak az a. Ami a közös illetve a másik halmaz értéke nem látszik
print(h1 | h2) #két halamz uniója
print( h1 & h2) #két halmaz metszete
print(h1 ^ h2) # Minden benne van, kivéve ami mind a 2 halmazban
print('m' in h1) #Vizsgálja hogy benne van-e az m érték)
a l f m
j o a t n á
{'l', 'f', 'm'}
{'j', 'o', 'm', 'a', 'l', 'á', 't', 'n', 'f'}
{'a'}
{'o', 'l', 't', 'á', 'f', 'j', 'm', 'n'}
True
Az előző kódblokk egy set (halmaz) típusú változó létrehozásával, kezelésével foglalkozik. A set egy olyan adatszerkezet, amelyben az elemek egyedi (nem ismétlődő) és rendezetlen sorrendben szerepelnek. A set-et a kapcsos zárójelek között adjuk meg.
A kódblokk az „almafa” és „jonatán” stringekből halmazokat hoz létre a set() függvény segítségével. A * operátorral kiírjuk a halmazok elemeit.
Ezután kiírjuk a h1 halmaz és a h2 halmaz különbségét (h1-h2), amely csak az „a” elemet tartalmazza, mivel az a csak az első halmazban szerepel.
A | operátorral a h1 halmaz és a h2 halmaz unióját kapjuk meg, vagyis az összes elemet, amelyek bármelyik halmazban szerepelnek.
Az & operátorral a két halmaz metszetét kapjuk meg, vagyis azokat az elemeket, amelyek mindkét halmazban szerepelnek.
A ^ operátorral a szimmetrikus differenciát kapjuk meg, amely azokat az elemeket tartalmazza, amelyek az egyik halmazban, de nem a másikban, vagyis az összes olyan elemet, amely csak az egyik halmazban szerepel.
Végül a ‘m’ karakternek a h1 halmazban való előfordulását vizsgáljuk meg a ‘m’ in h1 kóddal, és a True eredményt kapjuk, mivel az „almafa” szóban van „m” karakter.
Szótár
d = {'Neve':'Ede', 'Kora':20, 'Menzás':True, 'Jegyek':[1, 3, 5, 4, 3, 2] }
print(d)
print(d['Neve'])
print(len(d))
print(type(d))
{'Neve': 'Ede', 'Kora': 20, 'Menzás': True, 'Jegyek': [1, 3, 5, 4, 3, 2]}
Ede
4
Az adott kódrészlet egy szótár (dictionary) létrehozását mutatja be. A szótár egy kulcs-érték párokat tároló adatszerkezet, ahol a kulcsok egyediek és nem lehetnek megismétlődők. Az értékek bármilyen típusúak lehetnek.
A kódrészletben az ‘d’ nevű szótár négy kulcs-érték párt tartalmaz. Az első kulcs ‘Neve’, az értéke ‘Ede’, a második kulcs ‘Kora’, az értéke 20, a harmadik kulcs ‘Menzás’, az értéke True, és a negyedik kulcs ‘Jegyek’, az értéke pedig egy lista [1, 3, 5, 4, 3, 2].
Az utána következő sorokban az adott szótár kulcsainak és értékeinek lekérdezése történik. Az ‘Neve’ kulcshoz tartozó érték ‘Ede’, a szótár hossza (azaz a benne tárolt kulcs-érték párok száma) 4, és a szótár típusa a ‘dict’.
String - Szöveg
s = 'Az alma nem esik messze a Fájától'
print(s)
print(len(s)) #Hány karakterből áll
print(type(s))
print(s.startswith('Az')) #Megnézi hogy ezzel kezdődik-e
print(s.startswith('alma', 3, 10))
print(s.endswith('Fájától')) #Szerepel-e
print(s.count('al')) #Megszámolja mennyi ilyen van benne
print(s.index('al')) #Hanyadik karaktertől van
print(s.strip('A')) #Eltávolítja az "A" karaktert
sl = s.split(' ')
print(sl) # itt kiíratjuk a sl változó értékét
Az alma nem esik messze a Fájától
34
True
False
True
2
3
z alma nem esik messze a Fájától
['Az', 'alma', 'nem', 'esik', 'messze', 'a', 'Fájától']