Witam serdecznie,
Czym się różnią od siebie w praktyce słowniki, zbiory oraz tablice?
Głównie interesuje mnie to w kontekście SWIFTa, ale pewnie w każdym języku będzie podobnie :)
0
0
Słownik jest jak słownik papierowy, każdy element to 2 wartości: "klucz" (słowo), oraz "wartość" - objaśnienie co to słowo znaczy. Słownik przeszukujesz po kluczu, uzyskując w efekcie jego wartość.
Tablica natomiast to coś na kształt ponumerowanych półek w magazynie, masz ponumerowane pojemniki, i coś tam w może w nich być. Sprawdzasz wg numeru.
0
A zbiór?:)
0
W przypadku Pythona jest to nieuporządkowana kolekcja unikalnych elementów, dla których np. zdefiniowano matematyczne działa na zbiorach.
2
Podstawowe pojęcia
- Zbiór jest to pojęcie pierwotne oznaczające kolekcję czegoś, np. krzeseł, gdzie każdy element występuje tylko raz (w przeciwnym wypadku jest to multizbiór)
- Atom to pojęcie pierwotne, czyli jakakolwiek wartość nie będąca zbiorem
- Krotka to zbiór N elementów, które jesteśmy w stanie rozróżnić (używając np. jakiegoś atomu)
Z punktu widzenia teoretyka to:
- Słownik to zbiór krotek zawierających 2 pola:
klucz
iwartość
, przy czymklucz
jest unikatowy względem całego zbioru - Tablica to słownik gdzie klucze są kolejnymi liczbami naturalnymi
Z punktu widzenia praktyka:
- Tablica to ciągły fragment pamięci zawierający wartości o tym samym rozmiarze
- Lista to uogólnienie tablicy do ciągu elementów (niekoniecznie ułożonych w ciągłum obszarze pamięci)
- Drzewo to krotka zawierająca element oraz listę dzieci będących również drzewem lub pustą wartością
- Zbiór będzie zaimplementowany jako tablica haszująca lub drzewo
- Słownik jest zbiorem krotek jak wyżej
W praktyce różnice są takie:
Operacja | Tablica | Słownik | Zbiór |
---|---|---|---|
Dostęp do wartości | Najszybszy | Wolny/Szybki | Wolny/Szybki |
Dodanie elementu | Wolne | Szybkie, ale może spowolnić | Szybkie, ale może spowolnić |
Typ klucza | Liczba z przedziału 0 do rozmiaru tablicy (wyłącznie) | Dowolny | Nie dotyczy, zbiór zawiera tylko wartości |
Dodatkowo na zbiorach można określić relacje oraz działania gdzie na pozostałych typach zbiór tych działań się odpowiednio redukuje.