adatszerkezet
Kiejtés
- IPA: [ ˈɒdɒt͡sːɛrkɛzɛt]
Főnév
adatszerkezet
Adatszerkezetek Pythonban
Python számos beépített adatszerkezetet kínál, amelyek segítségével hatékonyan tárolhatunk és kezelhetünk adatokat. Az alábbiakban bemutatjuk a leggyakoribb adatszerkezeteket Pythonban, valamint azok használatát példákkal.
1. Lista
A lista egy rendezett, módosítható, és indexelhető gyűjtemény, amely tetszőleges típusú adatokat tárolhat.
Példa:
# Lista létrehozása
my_list = [1, 2, 3, 4, 5]
# Hozzáadás
my_list.append(6)
# Törlés
my_list.remove(3)
# Lista kiírása
print(my_list) # [1, 2, 4, 5, 6]
- Előnyök:
- A lista bármilyen típusú adatot tárolhat (számokat, karaktereket, más listákat stb.).
- Az elemek elérhetők indexeléssel.
- Hátrányok:
- A lista közepén való módosítások (pl. beszúrás) lassúak lehetnek.
2. Tuple (Névtelen Adatszerkezet)
A tuple egy rendezett, de nem módosítható adatszerkezet, amely gyorsabb a listánál.
Példa:
# Tuple létrehozása
my_tuple = (1, 2, 3, 4, 5)
# Tuple kiírása
print(my_tuple) # (1, 2, 3, 4, 5)
# A tuple elemei nem módosíthatók
# my_tuple[0] = 10 # Hiba! 'tuple' object does not support item assignment
- Előnyök:
- Gyorsabb, mint a lista, ha nem kell módosítani.
- Mivel nem módosítható, biztonságosabb, ha csak olvasni szeretnénk az adatokat.
- Hátrányok:
- Nem módosíthatók, ezért nem alkalmasak olyan helyzetekre, ahol szükség van módosításra.
3. Szótár (Dictionary)
A szótár egy kulcs-érték párban tárolt adatszerkezet. Az elemek gyorsan elérhetők kulcs alapján.
Példa:
# Szótár létrehozása
my_dict = {'apple': 1, 'banana': 2, 'cherry': 3}
# Érték hozzáadása
my_dict['orange'] = 4
# Érték kiolvasása kulcs alapján
print(my_dict['apple']) # 1
# Kulcs törlése
del my_dict['banana']
# Szótár kiírása
print(my_dict) # {'apple': 1, 'cherry': 3, 'orange': 4}
- Előnyök:
- Az adatok gyorsan elérhetők kulcs alapján.
- Dinamikusan bővíthető.
- Hátrányok:
- A kulcsoknak egyedinek kell lenniük.
4. Halmaz (Set)
A halmaz egy nem rendezett, egyedi elemeket tartalmazó adatszerkezet. A halmazok hasznosak az ismétlődő elemek eltávolítására.
Példa:
# Halmaz létrehozása
my_set = {1, 2, 3, 4, 5}
# Hozzáadás
my_set.add(6)
# Ismétlődő elem nem kerül hozzáadásra
my_set.add(3)
# Halmaz kiírása
print(my_set) # {1, 2, 3, 4, 5, 6}
# Törlés
my_set.remove(4)
# Halmaz kiírása
print(my_set) # {1, 2, 3, 5, 6}
- Előnyök:
- Az elemek egyediek.
- Gyors műveletek (például keresés, hozzáadás, törlés).
- Hátrányok:
- Nem támogatja az indexelést, mivel a halmazok nem rendezettek.
5. Queue (Sor)
A queue (sor) egy FIFO (First In, First Out) típusú adatszerkezet, amelyben az elemek a sorrendjükben kerülnek feldolgozásra.
Példa:
from collections import deque
# Sor létrehozása
queue = deque()
# Elemeink hozzáadása
queue.append(1)
queue.append(2)
queue.append(3)
# Elem eltávolítása
print(queue.popleft()) # 1
# Sor kiírása
print(queue) # deque([2, 3])
- Előnyök:
- A sor műveletek gyorsak.
- Lehetővé teszi az elemeket rendezett módon kezelni.
- Hátrányok:
- A sor egyszerű, de nem biztosít gyors hozzáférést az elemekhez.
6. Stack (Verem)
A stack (verem) egy LIFO (Last In, First Out) típusú adatszerkezet, ahol az utolsó elem kerül először feldolgozásra.
Példa:
# Verem létrehozása
stack = []
# Elemeink hozzáadása
stack.append(1)
stack.append(2)
stack.append(3)
# Elem eltávolítása
print(stack.pop()) # 3
# Verem kiírása
print(stack) # [1, 2]
- Előnyök:
- Az utolsó elem hozzáféréséhez gyors és hatékony.
- Alkalmas például visszalépési mechanizmusokhoz.
- Hátrányok:
- Csak az utolsó elemhez férhetünk hozzá gyorsan, nem támogatja az indexelést.
7. Heap (Halom)
A heap egy speciális, rendezett bináris fa, amelyet gyakran használnak prioritásos sorok implementálására. A Python-ban a heapq
modul biztosítja a heap adatszerkezetet.
Példa:
import heapq
# Halom létrehozása
heap = []
# Elem hozzáadása
heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)
# Legkisebb elem eltávolítása
print(heapq.heappop(heap)) # 1
# Halom kiírása
print(heap) # [2, 3]
- Előnyök:
- Lehetővé teszi a gyors hozzáférést a legkisebb vagy legnagyobb elemhez.
- Hatékony prioritásos sorok implementálására.
- Hátrányok:
- A heap struktúra nem alkalmas gyors indexelésre.
Összegzés
- Listák és tuplák egyszerű és rugalmas adatstruktúrák, amelyek tökéletesek általános tárolásra.
- Szótárak és halmazok hatékonyak az elemek gyors keresésére.
- Queue és Stack ideálisak olyan helyzetekben, ahol a műveletek sorrendje kritikus.
- Heap hasznos a prioritásos sorok és algoritmusok (pl. Dijkstra, A*) számára.
Mindezek a Python adatszerkezetei alapvetőek és hasznosak különböző típusú problémák megoldására.
Etimológia
Fordítások
- angol: data structure (en)
- szerbhorvát: podatkovna struktura (sh) nn
- német: Datenstruktur (de) nn
- orosz: структура данных (ru) (struktura dannyx)
- adatszerkezet - Értelmező szótár (MEK)
- adatszerkezet - Etimológiai szótár (UMIL)
- adatszerkezet - Szótár.net (hu-hu)
- adatszerkezet - DeepL (hu-de)
- adatszerkezet - Яндекс (hu-ru)
- adatszerkezet - Google (hu-en)
- adatszerkezet - Helyesírási szótár (MTA)
- adatszerkezet - Wikidata
- adatszerkezet - Wikipédia (magyar)