JavaRush /Курси /Модуль 1: Python Core /Просунута робота з кортежами

Просунута робота з кортежами

Модуль 1: Python Core
Рівень 5 , Лекція 14
Відкрита

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)))
        
1
Опитування
Кортежі в Python, рівень 5, лекція 14
Недоступний
Кортежі в Python
Кортежі в Python
Коментарі (4)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Максим Рівень 9
18 березня 2025
який тут сенс?: Для об'єднання великої кількості кортежів можна використовувати функцію 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)
якщо у нас буде наприклад так, воно ж видасть помилку

from itertools import chain

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = (7, 8, 9)

combined_tuple = tuple(chain(tuple1, tuple2, tuple3, tuple4))
print(combined_tuple)
що значить "невідома кількість кортежів"?
Максим Рівень 9
18 березня 2025


NameError: name 'tuple4' is not defined. Did you mean: 'tuple1'?
Максим Рівень 9
18 березня 2025
яка різниця? Нащо той

chain

from itertools import chain

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = (7, 8, 9)

combined_tuple = tuple(tuple1 + tuple2 + tuple3)
print(combined_tuple)
Avocoder Рівень 13
26 квітня 2025
Мається на увазі, коли ти отримуєш дані з якогось АПІ для прикладу, і там може прийти як 1 tuple, а може прийти їх 10. І за допомогою chain ти їх поєднуєш ( чи буде він один, чи 10 це вже розбереться chain) в один і далі використовуєш де тобі потрібно