15.1 Tworzenie kopii krotki
No więc, już wiemy, że krotki (tuples)
— to niezmienne sekwencje elementów. Ze względu na ich niezmienność stworzenie kopii krotki może się wydawać nieistotnym zadaniem, przecież w przeciwieństwie do list, krotki się nie zmieniają po stworzeniu.
Jednakże w pewnych sytuacjach może być konieczne stworzenie kopii krotki, szczególnie gdy ważne jest praca z jej osobną wersją, bez zmieniania danych źródłowych. Oto główne sposoby:
Bezpośrednie przypisanie
Najprościej stworzyć kopię krotki, używając bezpośredniego przypisania. To stworzy nowy obiekt krotki, ale ponieważ krotki są niezmienne, oba obiekty będą wskazywać na te same dane.
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = original_tuple
print(copied_tuple)
W tym przypadku copied_tuple
będzie odnosić się do tego samego obiektu co original_tuple.
Użycie funkcji tuple()
Inny sposób na stworzenie kopii krotki — to użycie wbudowanej funkcji tuple()
. Ta funkcja tworzy nową krotkę, kopiując elementy krotki źródłowej.
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = tuple(original_tuple)
print(copied_tuple)
Ta metoda jest szczególnie przydatna, gdy chcesz mieć pewność, że tworzysz nowy obiekt, nawet jeśli obiekt źródłowy może być innym iterowalnym obiektem.
Przekształcenie przez listę
Czasami może być konieczne stworzenie zmiennej kopii krotki w postaci listy, aby wprowadzić zmiany, a następnie ponownie przekształcić ją w krotkę.
original_tuple = (1, 2, 3, 4, 5)
temp_list = list(original_tuple)
temp_list.append(6)
copied_tuple = tuple(temp_list)
print(copied_tuple)
W tym przykładzie najpierw przekształcamy krotkę w listę, dodajemy nowy element, a potem przekształcamy listę z powrotem w krotkę.
15.2 Łączenie krotek
W przeciwieństwie do list, krotki nie mogą być zmieniane po utworzeniu, ale możesz tworzyć nowe krotki, łącząc istniejące. Łączenie krotek — to powszechna operacja, która może być przydatna w różnych scenariuszach programistycznych.
Główne sposoby łączenia krotek
Konkatenacja
Najprostszy sposób na połączenie dwóch lub więcej krotek — to użycie operatora +
. Ten sposób tworzy nową krotkę, która jest wynikiem konkatenacji krotek źródłowych.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple)
W tym przykładzie combined_tuple
będzie zawierać elementy (1, 2, 3, 4, 5, 6).
Mnożenie przez liczbę całkowitą
Możesz także użyć operatora *
do mnożenia krotki przez liczbę całkowitą. To powtarza krotkę określoną ilość razy i tworzy nową krotkę.
tuple1 = (1, 2, 3)
multiplied_tuple = tuple1 * 3
print(multiplied_tuple)
Tutaj multiplied_tuple
będzie zawierać elementy (1, 2, 3, 1, 2, 3, 1, 2, 3).
Funkcja itertools.chain
Do łączenia dużej liczby krotek można użyć funkcji chain
z modułu itertools
. Jest to wygodne, gdy ilość krotek do połączenia nie jest znana z góry.
from itertools import chain
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = (7, 8, 9)
combined_tuple = tuple(chain(tuple1, tuple2, tuple3))
print(combined_tuple)
Wynik będzie (1, 2, 3, 4, 5, 6, 7, 8, 9).
15.3 Wbudowane krotki
Krotki, zawierające w sobie inne krotki, nazywane są wbudowane krotki (nested tuples)
. Wbudowane krotki zapewniają wygodny sposób organizacji i strukturyzacji danych, szczególnie gdy trzeba przedstawiać wielowymiarowe dane lub złożone struktury.
Możesz łączyć krotki, tworząc wbudowane struktury. Jest to użyteczne do organizacji danych w struktury wielowymiarowe. Tworzenie wbudowanej krotki w Pythonie jest tak samo proste jak tworzenie zwykłej krotki. Po prostu zawierasz jedną krotkę w innej.
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
W tym przykładzie nested_tuple
zawiera trzy krotki, każda z których składa się z trzech elementów.
Przykład tworzenia wbudowanej krotki ze zwykłych:
W tym przykładzie nested_tuple
zawiera trzy krotki, każda z których składa się z trzech elementów.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
nested_tuple = (tuple1, tuple2)
print(nested_tuple)
Tutaj nested_tuple
będzie zawierać ((1, 2, 3), (4, 5, 6)).
Dostęp do elementów wbudowanej krotki
Dostęp do elementów wbudowanej krotki jest uzyskiwany za pomocą wielokrotnego indeksowania. Najpierw wskazujesz indeks dla zewnętrznej krotki, a potem dla wewnętrznej.
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
# Dostęp do elementu 5 w drugim wbudowanym krotce
element = nested_tuple[1][1]
print(element) # Wyjście: 5
Tablice wielowymiarowe
Wbudowane krotki są często używane do przedstawiania dwuwymiarowych lub wielowymiarowych tablic. Na przykład tabela danych może być przedstawiona jako krotka krotek, gdzie każdy wiersz tabeli jest osobną krotką.
Strukturyzacja danych
Wbudowane krotki są wygodne do strukturyzacji danych, takich jak współrzędne geograficzne (szerokość i długość) dla kilku miejsc:
locations = (("New York", (40.7128, -74.0060)),
("Los Angeles", (34.0522, -118.2437)),
("Chicago", (41.8781, -87.6298)))
GO TO FULL VERSION