Kiejtés

  • IPA: [ ˈɒdɒt͡sːɛrkɛzɛt]

Főnév

adatszerkezet

  1. (matematika, algoritmusok)

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

adat +‎ szerkezet

Fordítások