Python 4 (Listák, szótárak, tuple, set)

Python logo

A korábbi cikkekben már volt szó változókról, stringekről

A Python lehetőséget ad olyan változók használatára, amit talán összetett változóknak nevezhetünk.

Lista (list)

Egy listában többféle értéket sorolhatunk fel. Minden egyes érték lehet bármely eddig felsorolt, vagy a későbbiekben ismertetett típus, ide értve a listát is (igen, egy lista tartalmazhat listákat)

Kezdjük egy egyszerű esettel:

lis=['Alma','körte','cseresznye']
print(lis)
['Alma', 'körte', 'cseresznye']

A lista egyes elemit egyenként is elérhetjük:

print(lis[1])
körte

A lista elemeit a stringekhez hasonlóan nullától számoljuk. A lista részeit is a stringekhez hasonlóan érhetjük el:

print(lis[0:2])
['Alma', 'körte']

print(lis[-1])
cseresznye

A listák értékadása érdekes az eddigiekhez képest:

l2=lis
l2.append('banán')
print(lis).

Természetesen van lehetőség arra, hogy a lista másolatát hozzuk létre az l2 változóban:

l2=lis.copy()
l2.append('meggy')
print(l2)
['Alma', 'körte', 'cseresznye', 'banán', 'meggy']

print(lis)
['Alma', 'körte', 'cseresznye', 'banán']

A listák összefűzése összeadásjellel történik

lis3=lis+l2
print(lis3)
['Alma', 'körte', 'cseresznye', 'banán', 'meggy', 'Alma', 'körte', 'cseresznye', 'banán', 'meggy']

Egy adott elem első előfordulásának megkeresése:

print(lis3.index('banán'))
3

Ha olyan értéket keresünk, ami nem szerepel listában, akkor hibaüzenetet kapunk

Lehetőség van nem csak a lista végére, hanem tetszőleges pozícióba beszúrni elemet:

lis3.insert(2,'kiwi')
print(lis3)
['Alma', 'körte', 'kiwi', 'cseresznye', 'banán', 'meggy', 'Alma', 'körte', 'cseresznye', 'banán', 'meggy']

A listákat rendezni is lehet emelkedő és csökkenő sorrendbe

lis3.sort
print(lis3)
['Alma', 'Alma', 'banán', 'banán', 'cseresznye', 'cseresznye', 'kiwi', 'körte', 'körte', 'meggy', 'meggy']

Láthatóan a string típusú értékeket ábc sorrendbe rendezi, a szám jellegű értékeket pedig nagyság szerinti sorrendbe.

Természetesen ez a megoldás csak akkor működik, ha a tárolt értékek összehasonlíthatóak. A következő utasítás hibaüzenetet eredményez, mert egy sztringet nem lehet integerrel összehasonlítani:

lis3.append(2)
lis3.sort()

A cikk folytatásához távolítsuk el a 2 értéket:

lis3.remove(2)

A szám (integer) típusú elem eltávolítása után a rendezés ismét elvégezhető

 lis3.sort() 
print(lis3)
['Alma', 'Alma', 'banán', 'banán', 'cseresznye', 'cseresznye', 'kiwi', 'körte', 'körte', 'meggy', 'meggy']

Természetesen a rendezést meg lehet csinálni fordított sorrendben is

lis3.sort(reverse=True)
print(lis3) 
['meggy', 'meggy', 'körte', 'körte', 'kiwi', 'cseresznye', 'cseresznye', 'banán', 'banán', 'Alma', 'Alma']

Szótár (Dictionary)

A definíció szerint a dictionary kulcs:érték (key:value) párok rendezetlen halmaza. Használata akkor javasolt, ha az értékeket a kulcsok szerint szeretnénk elérni. Ilyenkor az értékek elérése viszonylag gyors.

A kulcs bármilyen unmutable (nem megváltoztatható) típusú érték lehet. Minden kulcs csak egyszer szerepelhet, ha ismét értéket próbálunk neki adni, akkor az eredeti értéket felülírja.

dic={'gyümölcs':['Banán','Alma'],'bútor':['Szék','szekrény']}
print(dic)
{'gyümölcs': ['Banán', 'Alma'], 'bútor': ['Szék', 'szekrény']}
dic['gyümölcs']=['alma','körte']
print(dic)
{'gyümölcs': ['alma', 'körte'], 'bútor': ['Szék', 'szekrény']}

A fenti példában a kulcsokhoz listába rendezett értékeket társítottam. A gyümölcs kulcshoz tartozó értékeket módosítottam.

Természetesen egyszerű típusok is lehetnek a dictionary értékei:

Például néhány gyümölcs árát is letárolhatjuk:

arak={} #létrehozunk egy üres dictionaryt
arak['alma']=450
arak['körte']=510
arak['cseresznye']=600
print(arak)
{'alma': 450, 'körte': 510, 'cseresznye': 600}
print(arak[körte])
510

Természetesen a dictionary value (érték) részében lehet list vagy dictionary is

dic={} # Létrehoztam egy üres dictionaryt-t
dic['Skoda']={'motor':'1400 ccm','kerék':'195 65 R14','tipus':'fabia'}
dic['ferrari']={'motor':'6200 ccm','kerék':'255/35R19','tipis':'maranello'}
print(dic)
{'Skoda': {'motor': '1400 ccm', 'kerék': '195 65 R14', 'tipus': 'fabia'}, 'ferrari': {'motor': '6200 ccm', 'kerék': '255/35R19', 'tipis': 'maranello'}}

Lehetőség van egy listába kigyűjteni egy listába a dictionary összes kulcsát (key)

print(dic.keys())
dict_keys(['Skoda', 'ferrari'])

Ha az értékekre (value) van szükség:

print(dic.values())
dict_values([{'motor': '1400 ccm', 'kerék': '195 65 R14', 'tipus': 'fabia'}, {'motor': '6200 ccm', 'kerék': '255/35R19', 'tipis': 'maranello'}])

Ezekre majd visszatérünk a ciklus utasításoknál.


Lehetőség van megállapítani, hogy hány elem (key-value pár) van egy dictionaryban

print(len(dic))
2

A dictionary-k másolása ugyan úgy történik, mint listák esetén

dic2=dic
dic['trabant']={'motor':'600 ccm', 'kerék':'145/80R13','tipus':'601'}
print(dic2)
{'Skoda': {'motor': '1400 ccm', 'kerék': '195 65 R14', 'tipus': 'fabia'}, 'ferrari': {'motor': '6200 ccm', 'kerék': '255/35R19', 'tipis': 'maranello'}, 'trabant': {'motor': '600 ccm', 'kerék': '145/80R13', 'tipus': '601'}}

Ez a fajta értékadás azt teszi lehetővé, hogy ugyan arra a dictionary-ra két (vagy több) névvel lehessen hivatkozni (ez hasonló, mint a list-esetén).

Ha a dictionary másolatára van szükség akkor a copy a megoldás:

dic2=dic.copy()

dic['trabant2']={'motor':'610 ccm', 'kerék':'145/80R23','tipus':'621'}
print(dic2)

{'Skoda': {'motor': '1400 ccm', 'kerék': '195 65 R14', 'tipus': 'fabia'}, 'ferrari': {'motor': '6200 ccm', 'kerék': '255/35R19', 'tipis': 'maranello'}, 'trabant': {'motor': '600 ccm', 'kerék': '145/80R13', 'tipus': '601'}}

Tuple (kupac)

A tuple hasonlít a list-re, azonban nem megváltoztatható (immutable) és ordered (sorszám szerint elérhetőek az elemek).

tu=("alma","körte","szilva")

Ha egy tuple-nek csak egy leme van, akkor az elem után ki kell tenni a vesszőt

tu=("alma",)

Térjünk vissza az eredeti tuple-hez

 tu=("alma","körte","szilva") 

A tuple „ordered”, tehát az egyes elemekre sorszám szerint lehet hivatkozni.

print(tu[1])
körte

A set unordered, itareble (az összes ebben a cikkben tárgyalt típushoz hasonlóan), halmaza az értékeknek. Az egyes már létező elemek nem megváltoztathatóak, azonban az elemek törölhetőek és új elemeket lehet a set-hez adni. Nem tárol ismétlődő elemeket. Fő előnye, hogy gyorsan kereshetőek benne az elemek.

s=set([„alma”,”körte”,”cseresznye”])
print(s)
{‘cseresznye’, ‘körte’, ‘alma’}

A sethez további elemeket adhatunk:

s.add(„banán”)
print(s)
{‘banán’, ‘cseresznye’, ‘körte’, ‘alma’}

Ha ugyan azt az értéket kétszer adjuk a sethez, csak egyszer fog szerepelni

s.add(„alma”)
print(s)
{‘banán’, ‘cseresznye’, ‘körte’, ‘alma’}

Az oldal használatával elfogadja, hogy az sütiket használ További információ

A sütik használatát érdemes engedélyezni a böngészőben.
The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Bezár