2024-07-16

Myśląc o Pythonie: więcej o Tuples

W poprzednim odcinku zaczęliśmy sobie mówić o tuplach w Pythonie. Dziś zatem pociągniemy sobie ten temat dalej. Co wiemy o takiej konstrukcji jak tupla, w języku Python? Ano wiemy, że jest to kolekcja, która jest niemutowalna, dostęp do niej jest szybszy i ogólnie jest ciekawym tworem.

Przypomnijmy sobie zatem jak możemy sobie stworzyć taką prostą tuple, a przy okazji przypomnijmy sobie jak sprawdzić czy w ogóle stworzyliśmy tuplę. Czy przypadkiem nie wyszło nam coś innego, bo i tak może się tutaj zdarzyć.

tworzenie prostej tupli w Pythonie

Jak możemy się spodziewać powyższy kod, w sposób nie do końca oczywisty, stworzy Nam prostą Tuple w Pythonie i sprawdzi jej typ. I gdy uruchomimy taki kod, możemy zobaczyć, że rzeczywiście stworzyliśmy tuple. Możemy teraz coś do niej dodać...

dodawanie do tupli w Pythonie

...a nie, czekajcie. W konsoli nam powiedzą, że jednak nie możemy. No właśnie, to przecież tupla, nie dodamy niczego. No to stwórzmy ją jeszcze raz.

Operacje na tuplach

Jeśli Naszą tuplę stworzymy od podstaw znowu, bo nie możemy jej zmodyfikować, i zrobimy ja trochę większą. Powiedzmy, że damy sobie w niej 8 kolejnych cyfr (z lenistwa). To będziemy mogli się pobawić, bo mimo tego, że nie możemy tupli zmieniać, to jednak jakieś operacje możemy wykonywać na niej.

tworzenie i wyświetlanie tupli w Pythonie

Możemy oczywiście tuplę wyświetlić, ale to już było, przejdźmy do slicingu. Możemy bowiem na tupli zastosować slicing, o którym niedawno się uczyliśmy w odniesieniu do list. Zróbmy zatem nową tuplę poprzez zastosowanie składnie wycinania na starej.

Stworzyliśmy nową tuplę o nazwie moja_nowa_tupla i dodaliśmy do niej trzy wartości. Zrobiliśmy to poprzez wycięcie trzech pierwszych wartości starej tupli, zastosowując na niej składnię slicingu. Nie podaliśmy pierwszej wartości bo i wycinamy od początku kolekcji, a tak to mniej pisania. Natomiast podaliśmy pozycję elementu , do którego wycinamy (ale bez niego), czyli pozycje numer 3. Finalnie skończyło się na tym, że wycięliśmy trzy pierwsze elementy poprzedniej tupli, by zrobić z nich nową.

Widzimy zatem, że Nasze stare sztuczki działają na nowopoznanych kolekcjach, więc są dość uniwersalne i nie musimy się uczyć czegoś nowego, w tym zakresie. No i bardzo dobrze, bowiem taka cecha jest dość wygodna i pożądana. Robisz prawo jazdy i możesz jeździć samochodem obojętnie jakiej marki.

Operatory in i not in na tuplach

Na tuplach w Pythonie jako kolekcji możemy też używać standardowych operatorów, jakich często używamy przy kolekcjach, czyli takich jak in czy not in. Moglibyśmy przykładowo sprawdzić czy cyfra dwa istnieje w nowej tupli.

używanie operatora in na tupli w Pythonie

Oczywiście użycie operatora dzięki, któremu sprawdzimy prawdziwość faktu obecności dwójeczki w Naszej tupli jest bajeszcznie prosta. Jest ona obecna. Analogicznie działa operator not in, którego sprawdzić działanie możesz sam/a w domu. Tak, róbcie to w domu!

Arytmetyka tupli

Możemy dodawać liczby, co każdy (mam nadzieję) wie z matematyki. Możemy dodawać do siebie także tablice, a z tego miejsca droga prosta do wniosku, że tuple też, bo skoro tablice są kolekcjami i się dodają, to czemuby nie dodać tupli? Sprawdźmy to.

dodawanie do siebie tupli w Pythonie

Jak widzimy, Nasze wnioski są trafne. Na pytanie czy tuple w Pythonie można dodawać odpowiedzieć od teraz możemy twierdząco. Nie samym dodawaniem jednak żyje człowiek, na tuple można rzucić też inne z podstawowych zaklęć arytmetyki.

dodawanie i mnożenie tupli w Pythonie

Jak więc można zobaczyć tuple można mnożyć czy dodawać, oczywiście można też dodać taką tuple, której jeszcze nie ma, przy okazji ją tworząc. Może te i inne zaklęcia przetestujesz w domu 😉

Inne przydatne operacje na tuplach

Skoro jest sobie taka tupla, a taka tupla jest kolekcją, to możemy także sprawdzić w łatwy sposób jej długość/ wielkość. Pamięta ktoś jak to się robi? Ano jest taka jedna funkcyjka, która może nam pomóc to zrobić - a właściwie zrobić to za nas. Jeśli użyjemy bowiem funkcji len() na takiej tupli, to otrzymamy ilość jej elementów, co w sumie jest tym o co nam chodzi.

sprawdzanie liczby elementów tupli w Pythonie

Jak widzimy, takie sobie kodzik używający na tupli funkcji wspomnianej, wyświetla nam cyfrę osiem, co by się zgadzało nawet z ilością Naszych elementów, bowiem jest ich właśnie tyle.

Możemy też wziąć sobie jakąś listę i użyć na niej takiej funkcji jak tuple(), tak jest w Pythonie taka funkcja. No i co mogłaby robić taka funkcja? Oczywiście zamieniać to co jej podamy w tuple. Zatem moglibyśmy sobie wziąć tą Naszą listę i w prosty sposób ją "przetuplić".

zamienianie listy w tuple w Pythonie

I tak oto, w bajeczne prosty sposób (bo rzeczy dzieją się prawie same) zamieniamy/ konwertujemy sobie listę w tuplę. Sprwdź czy można też na odwrót. Jeśli mamy sobie taką funkcję tuple i nie podamy jej żadnego argumentu to powstanie nowa, pusta tupla.

Na tuple, jak i na listay (znowu uniwersalność) można rzucać też inne przydatne zaklęcia. Oprócz zaklęcia len, będziemy mieli też max() czy min(), które pozwolą Nam na poznanie najmniejszej i największej wartości w kolekcji.

sprawdzanie minimalnej i maksymalnej wartości w tupli w Pythonie

Po dowiedzeniu się, że jeden jest najmniejsze w Naszej tupli, a największe 99, może nam przyjść ochota. Ochota na coś innego, a mianowicie redukcję. Możemy zredukować przykładowo zestaw Naszych wartości do jednej wartości - sumy wszystkich wartości. Zgadnijcie, do tego też mamy gotową, łatwą w użyciu funkcje o nazwie sum.

sumowanie elementów tupli w Pythonie

Otrzymujemy tylko jeden element, jedną wartość, która jest właśnie sumą Naszej całej tupli, możesz sprawdzić czy się zgadza.

Inne sztuczki

Ciekawą sztuczką może być też coś takiego, że każdą wartość tupli będzie reprezentowała inna zmienna. Oczywiście nie będziemy tutaj ręcznie przypisywać każdej kolejnej zmiennej, kolejnego elementu z tupli. Na osiągnięcie takiego efektu, jednym ze sposobów jest wykorzystanie czegoś, co można nazwać "wieloprzypisaniem". Jest to po prostu przypisanie wartości do kilku zmiennych w jednej linii. Możemy to osiągnąć wymieniając kolejne zmienne po przecinku.

przypisanie kolejnym zmiennym kolejnych elementów tupli w Pythonie

Jak możemy zauważyć każda kolejna zmienna wymieniona po przecinku otrzymała wartość każdego kolejnego elementu tupli. Jest to ciekawa sztuczka i nieraz się przydaje. Przy okazji możemy też zobaczyć, że print nie przyjmuje tylko jednego argumentu.

Możemy też niejako "oszukać system" bowiem możemy umieścić w tupli tablicę, która jest mutowalna. W takim wypadku niemutowalna tupla, będzie miała w sobie mutowalną tablicę, takiego trochę konia trojańskiego, bo "pokona" on niemutowalnośc tej tupli.

tablica jako element tupli w Pythonie

I tutaj Nasza tupla zyska supermoce, bowiem nie możemy jej zmienić, ani dodać do niej wartości, ale możemy takie operacje robić z tablicą będącą w środku tupli.

zmiana tablicy wewnątrz tupli w Pythonie

Jak więc możemy zobaczyć da się obejść system i zrobić niejako mutowalną tuplę, ale należy tak naprawdę wrzucić do niej tablicę i to ją zmieniać. Mamy wtedy możliwość zmian, dodawania czy usuwania. Jest to nienajlepszy pomysł, bowiem tuple do tego nie służą, ale się da 😉

Metody tupli

Na koniec możemy pokazać sobie dwie przydatne metody. Mówię tutaj o metodzie count, która pomoże Nam policzyć wystąpienia podanego jej jako argument elementu. Oraz metodzie index, która pomoże Nam znaleźć index konkretnego elementu, zobaczmy jak to działa.

użycie metod count i index na tupli w Pythonie

Możemy się przekonać, że w całej tupli moja_tupla są dwie sztuki cyfry dwa. Z kolei pierwsze wystąpienie wspomnianej cyfry jest na indeksie o numerze jeden. List nie umieszczamy w tupli. Też dlatego, że taka metoda count nie umie "wejść w listę" i zliczyć też tej dwójki ze środka listy.

Jak widzimy w Pythonie jest dużo uniwersalnych funkcji i operacji, które możemy stosować na kolekcjach. Jest to bardzo przydatna i wygodna rzecz, bowiem "poznajemy raz, możemy stosować w wielu sytuacjach". Na razie to tyle na temat tupli w Pythonie, ale nie zapominajmy o nich!

One comment on “Myśląc o Pythonie: więcej o Tuples”

Dodaj komentarz

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram