Data: 7.07.2021

Python krotka
Spis treści
Z artykułu Python krotka dowiesz się, w jaki sposób utworzyć krotkę w języku Python oraz jak wykorzystywać ją w programach.
Python krotka – jak utworzyć krotkę w Pythonie
Krotka (ang. tuple) to uporządkowana i niezmienna kolekcja elementów.
W języku Python krotki są pisane za pomocą okrągłych nawiasów np.
>>> wyposażenie = ("miecz", "zbroja", "tarcza")>>> print(wyposażenie)('miecz', 'zbroja', 'tarcza')>>>Elementy mogą być też podane bez nawiasów.
>>> wyposażenie = "miecz", "zbroja", "tarcza">>> print(wyposażenie)('miecz', 'zbroja', 'tarcza')>>>Jeśli krotka jest pusta musi zawierać nawiasy.
>>> wyposażenie = ()>>> print(wyposażenie)()>>>Jeśli krotka zawiera tylko jeden element, musi być po nim przecinek. Sygnalizujemy w ten sposób, że mamy do czynienia z krotką a nie ciągiem znaków.
>>> wyposażenie = ("miecz",)>>> print(wyposażenie)('miecz',)>>>Cechy charakterystyczne krotki
Cechy charakterystyczne krotek:
- krotki są typem sekwencji podobnie jak łańcuchy znaków
- w odróżnieniu od łańcuchów, które mogą zawierać tylko znaki, krotki mogą zawierać elementy dowolnego typu
- krotki są niemutowalne – nie można ich modyfikować
- dla łatwiejszego zrozumienia, krotkę można wyobrazić sobie jako pojedynczy rekord w bazie danych, który zawiera np. imię, nazwisko, datę urodzenia klienta (dane różnego typu)
Dostęp do elementów krotki
Dostęp do elementów krotki możemy uzyskać odwołując się do numeru indeksu. Numer indeksu podajemy w nawiasach kwadratowych
Jako indeksów możemy używać dodatnich i ujemnych liczb całkowitych. Liczby dodatnie oznaczają dostęp do początkowych elementów krotki od zera do ostatniego elementu. Liczby ujemne oznaczają dostęp do końcowych elementów krotki: -1 do pierwszego od końca, -2 do drugiego, i tak dalej. Można zatem odwołać się do wszystkich elementów krotki numerując je od początku lub od końca.
>>> wyposażenie = "miecz", "zbroja", "tarcza">>> print(wyposażenie[2])tarcza>>>W Pythonie krotki są indeksowane od zera. Dlatego powyższy kod zwraca słowo „tarcza”.
Drugi przykład:
>>> wyposażenie = "miecz", "zbroja", "tarcza">>> print(wyposażenie[-2])zbroja>>>Możemy odczytywać wybiórczo zawartość poszczególnych elementów krotki, tak jak w powyższych przykładach, lub całe ciągi elementów. Aby odczytać ciąg elementów w krotce, należy podać numer indeksu, od którego mają zostać odczytane elementy z krotki oraz dwukropek. Wówczas odczytane zostaną wszystkie elementy, zaczynając od wskazanego indeksu aż do końca krotki:
>>> wyposażenie = "miecz", "zbroja", "tarcza">>> wyposażenie[1:]('zbroja', 'tarcza')>>>Możliwe jest też odczytanie co któregoś elementu krotki. W poniższym przykładzie odczytujemy co drugi element:
>>> wyposażenie = "miecz", "zbroja", "tarcza">>> print(wyposażenie [::2])('miecz', 'tarcza')>>>Po utworzeniu krotki nie można zmienić jej wartości. Krotki są niezmienne. Nie można dodawać elementów do krotki ani usuwać z niej elementów.
Za pomocą słowa kluczowego del można jednak całkowicie usunąć krotkę:
>>> wyposażenie = "miecz", "zbroja", "tarcza">>> del wyposażenieSprawdzanie zawartości krotek
Zawartość krotek można sprawdzać. Aby sprawdzić, czy określona wartość znajduje się w krotce, używamy operatora in:
>>> wyposażenie = "miecz", "zbroja", "tarcza">>> "miecz" in wyposażenieTrue>>>W wyniku otrzymamy:
- wartość logiczną „TRUE”, jeśli element zostanie znaleziony
- wartość logiczną „FALSE”, jeśli element nie zostanie znaleziony
Drugi przykład:
wyposażenie = "miecz", "zbroja", "tarcza"if "miecz" in wyposażenie: print("Tak, 'miecz' jest w krotce")
Tak, 'miecz' jest w krotceInstrukcję if należy dwukrotnie zaakceptować przyciskiem Enter, aby wyświetlić wynik.
Przez elementy krotki możemy przechodzić za pomocą pętli for.
wyposażenie = "miecz", "zbroja", "tarcza"for x in wyposażenie: print(x)Pętlę for należy dwukrotnie zaakceptować przyciskiem Enter, aby wyświetlić wynik.
Porównywanie krotek
Krotki, podobnie jak listy, można porównywać. Porównywanie krotek odbywa się na zasadzie porównywania poszczególnych elementów:
- krotki są równe, jeżeli elementy obydwu krotek są sobie równe
- krotki są nierówne, jeżeli różnią się choć jednym elementem
- pierwsza krotka jest większa od drugiej, jeżeli pierwszy element pierwszej krotki jest większy od pierwszego elementu drugiej krotki
- element nieistniejący jest zawsze mniejszy od każdego innego elementu
# Krotka z wyposażeniem rycerzawyposazenie_rycerza = ('zbroja', 'hełm')
# Krotka z wyposażeniem wojownikawyposazenie_wojownika = ('zbroja', 'hełm', 'łuk')
# Porównanie krotekprint(wyposazenie_rycerza == wyposazenie_wojownika)
False
# False, gdyż jedna krotka jest dłuższa
# Porównanie krotekprint(wyposazenie_rycerza < wyposazenie_wojownika)True
# True, gdyż wyposazenie_rycerza jest krótszeKrotki wielopoziomowe
W przypadku krotek wielopoziomowych, które zawierają inne krotki, możliwy jest dostęp do poszczególnych elementów krotek podrzędnych poprzez użycie dwóch indeksów. Jako pierwszy podajemy zawsze indeks krotki wyższego rzędu.
>>> krotka = ((1,2,3,4,5),("tarcza","zbroja","miecz","hełm"))Struktura o nazwie „krotka” to krotka wyższego rzędu, składająca się z dwóch elementów:
- pierwszy element: krotka (1, 2, 3, 4, 5)
- drugi element: krotka („tarcza”, „zbroja”, „miecz”, „hełm”)
>>> krotka [1][0];krotka [0][2]'tarcza'3>>>- [1] wskazuje na drugi element głównej krotki, czyli („tarcza”, „zbroja”, „miecz”, „hełm”). [0] oznacza, że chcemy odczytać pierwszy element z tej krotki, czyli „tarcza”
- [0] wskazuje na pierwszy element głównej krotki, czyli (1, 2, 3, 4, 5). [2] oznacza, że chcemy trzeci element z tej krotki, czyli 3.
Metody krotki
Dostępne metody krotki:
>>> dir(())['__add__', '__class__', '__contains__', '__delattr__','__dir__', '__doc__', '__eq__', '__format__', '__ge__','__getattribute__', '__getitem__', '__getnewargs__','__gt__', '__hash__', '__init__', '__init_subclass__','__iter__', '__le__', '__len__', '__lt__','__mul__','__ne__', '__new__', '__reduce__','__reduce_ex__', '__repr__', '__rmul__', '__setattr__','__sizeof__', '__str__', '__subclasshook__','count', 'index']>>>Wydrukowanie liczby elementów w krotce:
>>> wyposażenie = ("miecz", "zbroja", "tarcza")>>> print(len(wyposażenie))3>>>Konstruktor krotki
Możliwe jest również użycie konstruktora tuple() do utworzenia krotki.
>>> wyposażenie = tuple(["miecz", "zbroja", "tarcza"])>>> print(wyposażenie)('miecz', 'zbroja', 'tarcza')>>>Konstruktor tuple() konwertuje dowolny iterowalny obiekt na krotkę.
W przykładzie przekazujemy do konstruktora tuple() listę [„miecz”, „zbroja”, „tarcza”].
Informacje na temat list znajdziesz w artykule Python lista.
Aby przećwiczyć krotki i inne elementy Pythona zajrzyj na nasze szkolenie Kurs Python poziom podstawowy.
