Python dla inżynierów

Python dla inżynierów: #4 Krotki

W Pythonie oprócz znanych Ci już list są też mniej znane, jednak nieraz bardzo przydatne, elementy zwane krotkami (ang. Tuples). Krotka jest to – mówiąc najkrócej – zbiór elementów. Wiele cech krotek jest podobnych do list, wiele jednak je od nich odróżnia. Ale tego dowiesz się za moment.

Po dzisiejszej lekcji opanujesz:

  1. Tworzenie krotek
  2. Podstawowe operacje i metody na krotkach
  3. Niezmienność krotek
  4. Kiedy stosować krotki?
  5. Przykład zastosowania krotek

1. Tworzenie krotek

Krotki (Tuples) i listy w Pythonie (Pamiętasz ostatnią lekcję dotyczącą List? Jeśli nie, znajdziesz ją tutaj) mogą wydawać się podobne. Ale nie daj się zmylić – jest między nimi wiele różnic. Pierwszą z nich jest to, że jeżeli krotki tworzymy za pomocą nawiasów, to używamy nawiasów okrągłych (), w których elementy rozdzielone są przecinkami. Oto przykład:

Krotki, podobnie jak listy, mogą zawierać mieszane typy danych (np. liczby całkowite, zmiennoprzecinkowe, tekst lub a listy). Taka krotka jak poniżej jest jak najbardziej możliwa:

Jak widzisz, krotki też mogą być zagnieżdżane (krotka w krotce).

2. Podstawowe operacje i metody na krotkach

Indeksowanie i „wycinanie” elementów

Większość elementów w Pythonie o cechach zbioru jak np. łańcuchy znaków (stringi), listy i właśnie krotki są indeksowane, czyli możesz odwołać się do wybranego elementu krotki. Odwołanie ma zapis uniwersalny dla Pythona:

Wynikiem będzie odpowiednio:

Teraz pokażę Ci na prostym przykładzie podstawową różnicę między krotką a listą. Otóż krotki są niemodyfikowalne! Sprawdźmy to. Spróbujmy zastąpić jeden element krotki:

Python zwróci błąd tego typu:

Zauważyłeś pewnie, że nie da się zamienić elementu w krotce tup. Wszystko to bierze się stąd, że krotki są obiektami o cesze niezmienności. Tutaj tylko o tym wspominam, w następnym punkcie rozwinę to szerzej.

Łączenie i powielanie krotek

Nic jednak nie stoi na przeszkodzie, żeby krotki łączyć ze sobą. Co prawda nie zmienia to zawartości łączonych krotek, ale powstaje nowa krotka zawierająca te połączone. Przykład:

W rezultacie dostaniemy:

Oprócz łączenia krotek możesz je też powielać za pomocą operatora *. Przykład:

Wynik: ('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c').

Metody wbudowane

Metody wbudowane (built-in methods) omawiałem już przy okazji napisów oraz list. Dzięki tym zaszytym metodom masz dostęp do bardzo przydatnych funkcji. Rzućmy okiem na kilka z nich.

Po wywołaniu tych metod Python zwróci nam odpowiednio:

Więcej o metodach wbudowanych znajdziesz w dokumentacji Pythona.

Zapis na newsletter

3. Niezmienność krotek

Chociaż krotki mogą wydawać się podobne do list, to jednak wykorzystuje się je w innych sytuacjach i w innych celach. Jak wspomniałem wyżej, krotki, w odróżnieniu do list, są niemodyfikowalne (immutable). Jest to ich kluczowa cecha!

W poprzednim punkcie podałem przykład próby podmiany elementu krotki na inny (tup[1] = 'zmień element'). Taka operacja nie może się powieść właśnie z racji niezmienności krotek (Immutability). To znaczy, że do raz utworzonej krotki nie można dodać ani usunąć żadnego jej elementu, jak też zmienić jej zawartości. Ma to istotne znaczenie, ponieważ na krotkach nie można wykonywać wielu operacji, jak na przykład:

Wywołanie obu tych metod zwróci błąd – dla append():

oraz dla remove():

Podobnie nie zadziałają innej metody jak extend() czy pop() itp.

OK, ale w takim razie po co są te krotki? Nie można zamiast nich stosować np. list? Dobre pytanie!

4. Kiedy stosować krotki?

Muszę tutaj przyznać, że krotek nie używa się zbyt często. Są one wykorzystywane w programowaniu zdecydowanie rzadziej niż listy i do tego w specyficznych zastosowaniach. A oto kilka zalet krotek:

  • Po pierwsze, krotki są znacznie szybsze podczas obliczeń niż listy. Różnica jest nawet 10-krotna (krótki test znajdziesz tutaj).
  • Krotki używamy wtedy, kiedy mamy do czynienia z elementami, które nie powinny być podatne na modyfikacje, jak np. spis dni tygodnia lub daty w kalendarzu. Krotki zapewniają bezpieczeństwo, że żaden z jej elementów jak i ona sama nie zmienią się podczas przeprowadzanych operacji. Listy tego nie zapewniają.
  • Zasada generalne jest też taka, że krotki używamy do przechowywania różnych typów danych (heterogeneous datatypes), natomiast listy do podobnych typów danych (homogeneous datatypes).
  • Dodatkowo, krotki możemy używać w tzw. słownikach jako ich klucze (o tym będzie w następnej lekcji).

5. Przykład zastosowania krotek

W tej lekcji pokażę Ci bardzo prosty zabieg, który często ułatwia życie w kodowaniu. Jest to proste wykorzystanie krotek do przypisywania zmiennym wartości. Weźmy belkę o kilku parametrach.

Przykład ten, mimo że jest ultra krótki, doskonale pokazuje elastyczność wykorzystania krotek.

Podsumowanie

OK, teraz podsumujmy czego się nauczyłeś. Potrafisz tworzyć krotki jak też odwoływać się do ich elementów. Umiesz je łączyć i powielać, wiesz też jak je przeszukiwać w celu określenia np. maksymalnej wartości elementu krotki (max()) lub jak obliczyć sumę elementów krotki (sum()). Rozróżniasz krotki od list – wiesz czym się różnią i wiesz jak i kiedy korzystać z krotek. Super! Masz już coraz więcej narzędzi w swoich rękach!

Pamiętaj, trening to podstawa skutecznej nauki! Ściągnij spakowany plik .py z tą lekcją i przetrenuj jeszcze raz ten kod. Jeśli masz pytania, pisz do mnie w komentarzu :)

W następnej lekcji zajmiemy się słownikami (Dictionaries)!


Wpisy z cyklu „Python dla inżynierów„:

  1. Wprowadzenie do Pythona i Liczby
  2. Napisy (Strings)
  3. Listy
  4. Krotki
  5. (w opracowaniu)
Podziel się z innymi:

8 komentarzy

  • Można by tu wspomnieć też o tym, że funkcje mogą zwracać wiele wartości w formie krotka i można je wygodnie przypisać od razu do wielu zmiennych

  • Panie Łukaszu!

    A mam pytanie, bo siedzę sobie nad Pańskim kursem i zaintrygowało mnie jedno rozwiązanie wymyślonego problemu. Otóż załóżmy, że mamy dowolną listę złożoną z liczb

    lista = [50, 30, 20, 10, 4, 2, 100, 200, 400]

    chciałbym wyszukać konkretną wartość listy i uwzględnić ją oraz wszystkie mniejsze od niej w swoich obliczeniach, które realizowane są w ramach pętli for

    for x in lista:

    polecenie

    polecenie

     

  • Wielokrotnie już tu zaglądam.

    Czekam na słowniki z kluczem/krotką i tablicą wewnątrz – to zapewne super zabawa.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *