PY_I_R_W13B_M05 Dynamiczne struktury danych. Implementacja
Przykłady dynamicznych struktur danych
W Pythonie większość struktur danych jest dynamiczna, to znaczy, w momencie użycia danej struktury nie musimy podawać jej rozmiaru. W każdej chwili możemy dodać element lub go usunąć. Przykłady poniżej pokazują jak dodać i usunąć element do najważniejszych/najczęściej wykorzystywanych struktur.
1. Lista (list)
Dodanie elementu
Usuwanie elementu
2. Słownik (dict)
Dodanie elementu
Usuwanie elementu
3. Zbiór (set)
Dodanie elementu
Usuwanie elementu
4. Kolejka dwustronna (deque)
Dodanie elementu
Usuwanie elementu
Klasa deque z modułu collections
Jak zaznaczyliśmy na początku materiału, jedną z podstawowych struktur danych wbudowanych w język Python jest lista. Jest to struktura dynamiczna ogólnego zastosowania i może służyć do implementacji stosu czy kolejki, jednak pamiętać należy, że listy w Pythonie optymalizowane są dla struktur o stałych rozmiarach.
Jeżeli więc zmierzamy korzystać ze struktur, w których liczba elementów często się zmienia, użyć należy klasy deque z modułu collections. Nazwa klasy jest skrótem od angielskich słów double‑ended queue, co oznacza kolejkę dwukierunkową. Klasa implementuje wyspecjalizowany kontener oferujący zoptymalizowane operacje dodawania i usuwania elementów z początku i końca struktury.
Klasa deque udostępnia m. in. następujące metody:
append()– zadaniem metody jest dodawanie elementu na końcu listy;pop()– metoda zwraca ostatni element listy i go usuwa;appendleft()– zadaniem metody jest dodawanie elementu na początku listy;popleft()– metoda zwraca pierwszy element listy i go usuwa.
Pozostałe funkcjonalności danej struktury (oznaczonej poniżej nazwą s) uzyskujemy za pomocą standardowych mechanizmów języka. Możemy używać następujących instrukcji:
len(s)– instrukcja zwraca liczbę elementów listy;s[0]– zadaniem instrukcji jest zwrócenie bez usuwania pierwszego elementu listy;s[-1]lubs[len(s) - 1]– zadaniem instrukcji jest zwrócenie bez usuwania ostatniego elementu listy;if s:,while s:,return s– instrukcja sprawdza, czy lista jest pusta; jeśli tak,sprzyjmie wartośćFalse, w przeciwnym razieTrue.