Otwieram nowy materiał o Pythonie 🧨! Dzisiaj dowiesz się czym w języku Python jest niejaka krotka, jedna z kilku struktur danych przeznaczonych do przechowywania wielu elementów 🔥! Opiszę Ci czym się charakteryzuje, jak wygląda w kodzie i w jakich przypadkach warto jej użyć zamiast pozostałych. Zapraszam 😉!
WYJAŚNIAM CZYM JEST KROTKA W JĘZYKU PYTHON!
Najpierw sam termin, potem zastosowania, a na końcu ukazanie budowy w kodzie źródłowym, czyli tak jak zwykle 😜!
Czym jest krotka w języku Python?
W Pythonie, krotka (ang. tuple) to struktura danych przeznaczona do przechowywania wielu elementów, która funkcjonuje dokładnie tak jak lista, czyli zezwala na powtarzanie się elementów, a ich kolejność jest zapamiętywana ✅. Jedyną różnicą jest to, iż krotka jest niemodyfikowalna 🔒! To oznacza, że nie można zmienić jej zawartości przez cały czas od momentu jej utworzenia i wprowadzenia elementów 🚫! Tym się różni krotka od listy!
Warto wiedzieć w jakich przypadkach jest lepiej użyć krotki!
Kiedy lepiej użyć krotki w języku Python, zamiast listy?
Krotki w Pythonie są użyteczne, gdy już na etapie pisania kodu źródłowego wiesz jak powinna wyglądać struktura danych, ile ma mieć wartości i jakie konkretnie 💡. Także jeżeli w którymkolwiek momencie będzie zależało Ci na zdefiniowaniu takich elementów, które mają być chronione przed późniejszymi modyfikacjami, wtedy lepiej użyć krotki, zamiast listy 👍.
Wszystko co wymagało wyłożenia teoretycznego. Przechodzimy do kodu!
Jak utworzyć krotkę w języku Python?
Krotkę w Pythonie tworzymy na 2 sposoby 👇:
- stworzenie pustej krotki (nieużyteczne, jak nie można później tego zmienić 😆),
- stworzenie krotki zawierającej elementy.
Krotka wygląda bardzo podobnie do listy, tylko zamiast nawiasów kwadratowych dodajemy okrągłe 👇:
my_tuple = ()To jest postać pustej krotki, której potem nie będziemy mogli zmienić 🔒. A to jest przykład krotki z liczbami całkowitymi (bez ułamka) w środku 👇:
my_tuple = (1, 2, 3)i tego też nie będziemy mogli zmienić ⛔! Próba przypisania nowej wartości w którymkolwiek elemencie 👇:
my_tuple[0] = 5spowoduje błąd typu "TypeError" i Python przerwie dalsze wykonywanie programu (o ile nie przechwycimy wyjątku) 🚫! Czyli zauważ, że to działa jak tworzenie stałych, tylko w kontekście całej struktury danych 🔥!
Python zezwala na wstawianie elementów różnych typów danych do jednej struktury (w odróżnieniu od wielu innych języków) 👇:
my_tuple = [1, 'Mój łańcuch znaków', 3.5]aczkolwiek nie radzę tak robić ❌. Mając różnorodne typy danych, zdecydowanie trudniej korzystać z takiej struktury w środku pętli 💥. Każdy typ danych wymaga innego podejścia i np. liczby odejmiesz od siebie bez problemu, natomiast przy łańcuchach znaków już będziesz mieć problem 😐. Lepiej jest rozdzielić sobie kod tak, że jedna struktura przechowuje wartości jednego typu 👍.
Krotka w języku Python to niemodyfikowalna struktura danych do przechowywania wielu elementów, których nie można później zmienić przez cały czas działania programu.
Kolejny wątek, to uzyskiwanie dostępu do elementów 👀!
Jak pobierać elementy z krotki w języku Python?
Korzystamy dokładnie z tego samego zapisu, co przy pobieraniu elementów z listy 😄. Posługujemy się notacją indeksową wskazującą na dany element w kolejności przy użyciu indeksu (liczba całkowita określająca numer porządkowy liczony od zera ℹ️). Krotka również zapamiętuje kolejność dodawanych elementów, stąd gwarancja, że element wstawiony jako N-ty w kolejności, będzie znajdować się do indeksem N - 1 👍.
Oto przykład pobierania pierwszego elementu z krotki w kolejności 👇:
print(my_tuple[0])Zaczynasz od podania nazwy zmiennej krotki. Następnie otwierasz parę nawiasów kwadratowych, a w środku nich wstawiasz liczbę nazywaną indeksem. Zobacz, że występuje 0 (zero), a nie jeden ⚠️! Gdy odwołujesz się do danego elementu poprzez indeks, zawsze odejmujesz wartość o jeden i to dotyczy każdej operacji tego typu (wynika to z architektury tablicy z języka C)! Gdy zainteresuje nas piąty element w kolejności 👇:
print(my_tuple[4])to piszesz indeks nr 4 😉! Tylko uważaj aby nie wyjść poza zakres krotki i nie próbować odwołać się do elementu, którego nie ma 💥! Jeżeli tak się stanie i nie przechwytujesz wyjątku, Python przerwie Twój program i wypisze błąd typu "IndexError", czyli indeks jest "poza zasięgiem" krotki.
Python wyjątkowo obsługuje też sięganie do indeksów ujemnych! To umożliwia nam uzyskiwanie dostępu od końca 😮! Na przykład jak napiszemy w ten sposób 👇:
print(my_tuple[-1])to będzie oznaczało pobranie ostatniego elementu. A jak zechcesz pobrać trzeci element od końca, to napiszesz tak 👇:
print(my_tuple[-3])W tym przypadku także musisz obserwować czy nie wychodzisz poza granice krotki. Gdyby tak się kiedykolwiek stało, zobaczysz ten sam efekt awarii programu opisany wyżej.
W ten sposób możesz sięgać bezpośrednio do konkretnych elementów krotki, natomiast nie jest to praktyka jaka powinna być regularnie stosowana ⚠️! Co innego, jak odwołujesz się do pierwszego czy ostatniego elementu, jako że to pewnego rodzaju "punkty kluczowe", aczkolwiek w pozostałej części przypadków lepiej jest podejść do tego w sposób wyszukania elementu po podanych kryteriach np. "znajdź mi element w postaci liczby 42" 🔍.
Warto jeszcze dowiedzieć się jak pobierać długość krotki 👍!
Jak wyznaczyć liczbę elementów w krotce w języku Python?
Do wyznaczania długości krotki czy jakiejkolwiek innej struktury danych w Pythonie, korzystamy z funkcji "len", do której wprowadzamy parametr w postaci tejże struktury. Jeżeli mamy taką krotkę 👇:
my_tuple = ('A', 'B', 'C')to wywołanie funkcji "len" z wprowadzeniem jej do środka 👇:
print(len(my_tuple))zwróci liczbę 3, bo krotka jest 3-elementowa 👍!
Przechodzę do metod i to będzie tyle 😊.
Jakie metody posiada krotka w języku Python?
Krotka w Pythonie zawiera w sobie tylko 2 następujące metody 👇:
- count,
- index.
Szybko je zaprezentuję ⏩! Umawiamy się, że będą opierać się o krotkę takiej postaci 👇:
my_tuple = (1, 2, 3)count
"count" przyjmuje jeden parametr w postaci elementu i zwraca liczbę jego wystąpień w krotce. Prosty przykład użycia 👇:
print(my_tuple.count(3))Liczba 3 pojawia się tylko jeden raz w krotce, więc wynikiem będzie wartość 1 ✔️.
Metoda "count" zlicza wszystkie wystąpienia elementu podanego w parametrze i zwraca na wyjściu liczbę wystąpień.
index
"index" w krotce działa identycznie jak "index" w liście 🙂. Przeszukuje krotkę celem odnalezienia podanego w parametrze elementu i jeżeli go znajdzie (a konkretniej jego pierwsze wystąpienie), zwraca na wyjściu liczbę jako indeks na jakim jest "położony" 🎯.
Oto przykład 👇:
print(my_tuple.index(3))Liczba 3 znajduje się na trzecim miejscu, a drugim indeksie i taki zostanie zwrócony na wyjściu ✔️.
Zwracam szczególną uwagę na małą nieprzyjemność 😳. Jeżeli funkcji nie uda się odnaleźć wskazanego elementu, to dojdzie do zgłoszenia błędu przez Pythona typu "ValueError" i przerwie dalsze wykonywanie programu, jeśli nie przechwytujemy wyjątku ⛔. Korzystając z tej funkcji upewnij się, że element którego szukasz, rzeczywiście istnieje 🙂.
Metoda "index" bada całą krotkę w poszukiwaniu wskazanego elementu i zwraca indeks oznaczający miejsce pierwszego wystąpienia. Wywołuje awarię programu, jeśli nie można było znaleźć elementu!
To już wszystko. Temat został pięknie wyjaśniony 😉!