Rc3eHnGputwzz
Fotografia przedstawia falującą wodę.

PY_I_R_W13B_M05 Dynamiczne struktury danych. Implementacja

Źródło: Michael Benz, dostępny w internecie: unsplash.com, domena publiczna.

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

Linia 1. miasta znak równości otwórz nawias kwadratowy cudzysłów Kraków cudzysłów przecinek cudzysłów Warszawa cudzysłów przecinek cudzysłów Bydgoszcz cudzysłów zamknij nawias kwadratowy. Linia 2. miasta kropka append otwórz nawias okrągły cudzysłów Tarnów cudzysłów zamknij nawias okrągły kratka dodanie na koniec. Linia 3. print otwórz nawias okrągły miasta zamknij nawias okrągły kratka otwórz nawias kwadratowy cudzysłów Kraków cudzysłów przecinek cudzysłów Warszawa cudzysłów przecinek cudzysłów Bydgoszcz cudzysłów przecinek cudzysłów Tarnów cudzysłów zamknij nawias kwadratowy.
  • Usuwanie elementu

Linia 1. miasta znak równości otwórz nawias kwadratowy cudzysłów Kraków cudzysłów przecinek cudzysłów Warszawa cudzysłów przecinek cudzysłów Bydgoszcz cudzysłów zamknij nawias kwadratowy. Linia 2. miasta kropka remove otwórz nawias okrągły cudzysłów Warszawa cudzysłów zamknij nawias okrągły kratka usuwa po wartości. Linia 3. print otwórz nawias okrągły miasta zamknij nawias okrągły kratka otwórz nawias kwadratowy cudzysłów Kraków cudzysłów przecinek cudzysłów Bydgoszcz cudzysłów zamknij nawias kwadratowy. Linia 5. miasta kropka pop otwórz nawias okrągły 0 zamknij nawias okrągły kratka usuwa po indeksie. Linia 6. print otwórz nawias okrągły miasta zamknij nawias okrągły kratka otwórz nawias kwadratowy apostrof Bydgoszcz apostrof zamknij nawias kwadratowy.

2. Słownik (dict)

  • Dodanie elementu

Linia 1. wzrosty znak równości otwórz nawias klamrowy cudzysłów Anna cudzysłów dwukropek 168 zamknij nawias klamrowy. Linia 2. wzrosty otwórz nawias kwadratowy cudzysłów Nikodem cudzysłów zamknij nawias kwadratowy znak równości 180 kratka dodanie pary klucz dwukropek wartość. Linia 3. print otwórz nawias okrągły wzrosty zamknij nawias okrągły kratka otwórz nawias klamrowy apostrof Anna apostrof dwukropek 168 przecinek apostrof Nikodem apostrof dwukropek 180 zamknij nawias klamrowy.
  • Usuwanie elementu

Linia 1. wzrosty znak równości otwórz nawias klamrowy apostrof Anna apostrof dwukropek 168 przecinek apostrof Nikodem apostrof dwukropek 180 zamknij nawias klamrowy. Linia 2. del wzrosty otwórz nawias kwadratowy cudzysłów Anna cudzysłów zamknij nawias kwadratowy kratka usunięcie po kluczu. Linia 3. print otwórz nawias okrągły wzrosty zamknij nawias okrągły kratka otwórz nawias klamrowy apostrof Nikodem apostrof dwukropek 180 zamknij nawias klamrowy.

3. Zbiór (set)

  • Dodanie elementu

Linia 1. liczby znak równości otwórz nawias klamrowy 1 przecinek 2 przecinek 3 zamknij nawias klamrowy. Linia 2. liczby kropka add otwórz nawias okrągły 4 zamknij nawias okrągły kratka dodanie nowej wartości. Linia 3. print otwórz nawias okrągły liczby zamknij nawias okrągły kratka otwórz nawias klamrowy 1 przecinek 2 przecinek 3 przecinek 4 zamknij nawias klamrowy.
  • Usuwanie elementu

Linia 1. liczby kropka remove otwórz nawias okrągły 2 zamknij nawias okrągły kratka usuwa podaną wartość. Linia 2. print otwórz nawias okrągły liczby zamknij nawias okrągły kratka otwórz nawias klamrowy 1 przecinek 3 przecinek 4 zamknij nawias klamrowy.

4. Kolejka dwustronna (deque)

  • Dodanie elementu

Linia 1. liczby znak równości otwórz nawias klamrowy 1 przecinek 2 przecinek 3 zamknij nawias klamrowy. Linia 2. liczby kropka add otwórz nawias okrągły 4 zamknij nawias okrągły kratka dodanie nowej wartości. Linia 3. print otwórz nawias okrągły liczby zamknij nawias okrągły kratka otwórz nawias klamrowy 1 przecinek 2 przecinek 3 przecinek 4 zamknij nawias klamrowy.
  • Usuwanie elementu

Linia 1. liczby kropka remove otwórz nawias okrągły 2 zamknij nawias okrągły kratka usuwa podaną wartość. Linia 2. print otwórz nawias okrągły liczby zamknij nawias okrągły kratka otwórz nawias klamrowy 1 przecinek 3 przecinek 4 zamknij nawias klamrowy.

Klasa deque z modułu collections

Dla zainteresowanych

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] lub s[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, s przyjmie wartość False, w przeciwnym razie True.