15.1 Створення копії кортежу
Отже, ми вже знаємо, що кортежі (tuples) — це незмінні послідовності елементів. Через їхню незмінність створення копії кортежа може здатися незначною задачею, адже на відміну від списків, кортежі не змінюються після створення.
Однак в деяких випадках може знадобитися створити копію кортежа, особливо коли важливо працювати з його окремою версією, не змінюючи вихідні дані. Ось основні способи:
Пряме присвоєння
Найпростіше створити копію кортежа, використовуючи пряме присвоєння. Це створить новий об'єкт кортежа, але оскільки кортежі незмінні, обидва об'єкти будуть посилатися на одні й ті ж дані.
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = original_tuple
print(copied_tuple)
У цьому випадку copied_tuple буде посилатися на той же об'єкт, що і original_tuple.
Використання функції tuple()
Інший спосіб створення копії кортежа — це використання вбудованої функції tuple(). Ця функція створює новий кортеж, копіюючи елементи вихідного кортежа.
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = tuple(original_tuple)
print(copied_tuple)
Цей метод особливо корисний, коли ви хочете переконатися, що створюєте новий об'єкт, навіть якщо вихідний об'єкт може бути іншим ітерованим об'єктом.
Перетворення через список
Іноді може знадобитися створити змінну копію кортежа у вигляді списку, щоб внести зміни, а потім знову перетворити його у кортеж.
original_tuple = (1, 2, 3, 4, 5)
temp_list = list(original_tuple)
temp_list.append(6)
copied_tuple = tuple(temp_list)
print(copied_tuple)
У цьому прикладі ми спочатку перетворюємо кортеж у список, додаємо новий елемент, а потім перетворюємо список назад у кортеж.
15.2 Об'єднання кортежів
На відміну від списків, кортежі не можуть бути змінені після створення, але ви можете створювати нові кортежі, об'єднуючи існуючі. Об'єднання кортежів — це поширена операція, яка може бути корисна у різних сценаріях програмування.
Основні способи об'єднання кортежів
Конкатенація
Найпростіший спосіб об'єднати два чи більше кортежів — це використати оператор +. Цей метод створює новий кортеж, який є результатом конкатенації вихідних кортежів.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple)
У цьому прикладі combined_tuple міститиме елементи (1, 2, 3, 4, 5, 6).
Множення на ціле число
Ви також можете використовувати оператор * для множення кортежа на ціле число. Це повторює кортеж задану кількість разів і створює новий кортеж.
tuple1 = (1, 2, 3)
multiplied_tuple = tuple1 * 3
print(multiplied_tuple)
Тут multiplied_tuple міститиме елементи (1, 2, 3, 1, 2, 3, 1, 2, 3).
Функція itertools.chain
Для об'єднання великої кількості кортежів можна використовувати функцію chain з модуля itertools. Це зручно, коли кількість кортежів для об'єднання невідома заздалегідь.
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)
Результат буде (1, 2, 3, 4, 5, 6, 7, 8, 9).
15.3 Вкладені кортежі
Кортежі, що містять всередині себе інші кортежі, називаються вкладеними кортежами (nested tuples). Вкладені кортежі надають зручний спосіб організації та структурування даних, особливо коли необхідно представляти багатовимірні дані чи складні структури.
Ви можете об'єднувати кортежі, створюючи вкладені структури. Це корисно для організації даних у багатовимірні структури. Створення вкладеного кортежа в Python так само просто, як і створення звичайного кортежа. Ви просто включаєте один кортеж в інший.
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
У цьому прикладі nested_tuple містить три кортежі, кожен з яких складається з трьох елементів.
Приклад створення вкладеного кортежа із звичайних:
У цьому прикладі nested_tuple містить три кортежі, кожен з яких складається з трьох елементів.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
nested_tuple = (tuple1, tuple2)
print(nested_tuple)
Тут nested_tuple буде містити ((1, 2, 3), (4, 5, 6)).
Доступ до елементів вкладеного кортежа
Доступ до елементів вкладеного кортежа здійснюється з використанням множинної індексації. Спочатку вказуєте індекс для зовнішнього кортежа, а потім для внутрішнього.
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
# Доступ до елемента 5 у другому вкладеному кортежі
element = nested_tuple[1][1]
print(element) # Вивід: 5
Багатомірні масиви
Вкладені кортежі часто використовуються для представлення двовимірних або багатовимірних масивів. Наприклад, таблиця даних може бути представлена як кортеж кортежів, де кожен рядок таблиці є окремим кортежем.
Структурування даних
Вкладені кортежі зручні для структурування даних, таких як географічні координати (широта і довгота) для кількох місць:
locations = (("New York", (40.7128, -74.0060)),
("Los Angeles", (34.0522, -118.2437)),
("Chicago", (41.8781, -87.6298)))
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ