Krotka (ang. tuple) to jeden z wbudowanych struktur danych w Pythonie, podobny do listy. Może przechowywać dane dowolnego typu i są one indeksowane liczbami całkowitymi. W przeciwieństwie do list, krotki są niemutowalne, czyli po utworzeniu nie można ich zmieniać. Choć są one wykorzystywane w programowaniu zdecydowanie rzadziej niż listy, to ich znajomość bywa niezbędna w specyficznych zastosowaniach, np. w obliczeniach czy analizie danych.
Tworzenie krotek w Pythonie
Krotkę tworzymy poprzez wymienienie elementów w nawiasach okrągłych. Jej elementy mogą być różnego typu, tak jak w poniższym przykładzie, w którym zawiera ona wartości typu int, float oraz string.
# Tworzenie krotki
moja_krotka = (1, 2, 3, 'abc', 2.5)
# Wyświetlenie krotki
print("Krotka:", moja_krotka)
Wynik
Krotka: (1, 2, 3, 'abc', 2.5)
Dość nieintuicyjne jest tworzenie krotki zawierającej jeden element. Żeby stworzyć jednoelementową krotkę, należy po pierwszym elemencie umieścić przecinek, pomimo tego, że nie występują po nim żadne kolejne elementy.
krotka = ("jablko",)
print(type(krotka))
# To nie jest krotka
nie_krotka = ("jablko")
print(type(nie_krotka))
Wynik
<class 'tuple'>
<class 'str'>
Dostęp do elementów krotki
Do poszczególnych elementów krotki odwołujemy się poprzez indeksy, pamiętając przy tym, że pierwszy element ma indeks 0.
# Dostęp do elementów krotki
moja_krotka = (1, 2, 3, 'abc', 2.5)
pierwszy_element = moja_krotka[0]
trzeci_element = moja_krotka[2]
print("Pierwszy element:", pierwszy_element)
print("Trzeci element:", trzeci_element)
Wynik
Pierwszy element: 1
Trzeci element: 3
Konkatenacja
Konkatenacja to operacja łączenia dwóch lub więcej ciągów znaków, sekwencji lub struktur danych w jeden dłuższy ciąg lub strukturę. W języku Python konkatenacja krotek odbywa się poprzez operator +
.
# Tworzenie dwóch krotek
krotka1 = (1, 2, 3)
krotka2 = ('a', 'b', 'c')
# Konkatenacja
nowa_krotka = krotka1 + krotka2
# Wyświetlenie wyniku
print("Krotka 1:", krotka1)
print("Krotka 2:", krotka2)
print("Po konkatenacji:", nowa_krotka)
Wynik
Krotka 1: (1, 2, 3)
Krotka 2: ('a', 'b', 'c')
Po konkatenacji: (1, 2, 3, 'a', 'b', 'c')
Cięcie (slicing)
Slicing w Pythonie to technika “wycinania” fragmentów sekwencji, takich jak listy czy ciągi znaków. Podobnie jak w listach, aby wyciąć fragment krotki, korzystamy z nawiasów kwadratowych, w których umieszczamy zakres w następujący sposób: indeks_początkowy:indeks_końcowy. Pamiętajmy przy tym, że element znajdujący się na położeniu indeks_końcowy nie zawiera się w wyciętym fragmencie, co wynika ze sposobu przechowywania danych w pamięci komputera.
# Tworzenie krotki
moja_krotka = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
# Slicing krotki
fragment_krotki = moja_krotka[2:6]
# Wyświetlenie wyniku
print("Krotka:", moja_krotka)
print("Fragment krotki:", fragment_krotki)
Wynik
Krotka: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
Fragment krotki: (2, 3, 4, 5)
Rozpakowanie krotki
Rozpakowanie krotki polega na przypisaniu wartości elmentów do zmiennych. W Pythonie dokonujemy tego w jednej instrukcji, jak w poniższym przykładzie.
samochod = ("Toyota", "Camry", 2022)
# Rozpakowywanie krotki
marka, model, rok_produkcji = samochod
# Wyświetlanie informacji o samochodzie
print("Marka:", marka)
print("Model:", model)
print("Rok produkcji:", rok_produkcji)
Wynik
Marka: Toyota
Model: Camry
Rok produkcji: 2022
Usuwanie krotek
Krotkę usuwamy przy użyciu operatora del.
# Tworzenie krotki
moja_krotka = (1, 2, 3, 4, 5)
# Wyświetlenie krotki przed usunięciem
print("Krotka przed usunięciem:", moja_krotka)
# Usunięcie krotki
del moja_krotka
print("Krotka po usunięciu:", moja_krotka)
Wynik
Krotka przed usunięciem: (1, 2, 3, 4, 5)
NameError: name 'moja_krotka' is not defined
Liczba elementów krotki
Tę operację wykonujemy przy użyciu len().
krotka = (3, 4, 7)
print(len(krotka))
Wynik:
3
Sortowanie krotki
Krotka jest niezmienna (niemutowalna), co oznacza, że nie możemy jej modyfikować po jej utworzeniu. Jeżeli chcemy posortować elementy krotki, to musimy przypisać wynik do nowej zmiennej. Możemy to zrobić w poniższy sposób:
# Krotka
data = (3, 1, 2)
# Przekształcenie krotki na listę, sortowanie i przekształcenie z powrotem na krotkę
sorted_data = tuple(sorted(data))
print(sorted_data)
Wynik:
(1, 2, 3)
Inne operacje
W Pythonie mamy dostęp do zestawu funkcji wbudowanych do operacji na krotkach. Kilka z nich wraz z ich działaniem wymieniłem poniżej.
Wbudowana funkcja | Działanie |
---|---|
all() | zwraca wartość true, jeśli wszystkie elementy mają wartość true lub jeśli krotka jest pusta |
any() | zwraca wartość true, jeśli którykolwiek element krotki ma wartość true. jeśli krotka jest pusta, zwróć wartość false |
count() | zwraca liczbę wystąpień danego elementu w krotce |
enumerate() | zwraca obiekt wyliczeniowy krotki |
max() | zwraca maksymalny element podanej krotki |
min() | zwraca minimalny element podanej krotki |
sum() | sumuje liczby w krotce |
sorted() | zwraca nową krotkę zawierającą posortowane elementy z oryginalnej krotki |
Pobierz notatnik Jupyter z kodem
Podsumowanie
Z artykułu dowiedziałeś się czym jest krotka i jak wykonywać operacje na krotkach, takie jak: tworzenie, konkatenacja, usuwanie czy cięcie.
Przeczytaj inne materiały:
O autorze
Dr hab. inż. Szymon Skoneczny specjalizuje się w informatyce przemysłowej i symulacjach komputerowych. Współpracował z takimi uczelniami jak Politechnika Krakowska i Akademia Górniczo-Hutnicza oraz firmami, m. in. Siemens, Electricite de Fracne, ArcelorMittal.