Як створити кортежі в Python і навіщо їх використовувати?

Кортеж — це вбудований тип даних у Python, який використовується для зберігання колекції даних. Він схожий на список, але трохи швидший.

Однак його обмеження роблять списки більш бажаними в деяких ситуаціях. У цій статті я поясню все, що вам потрібно знати, щоб почати використовувати кортежі.

Що таке кортеж?

Як згадувалося раніше, кортеж — це один із вбудованих типів даних у Python, який використовується для зберігання колекцій даних. Він подібний до списку Python тим, що зберігає дані у форматі, подібному до масиву, який можна повторювати. Проте, на відміну від списку, кортеж є незмінним. Тобто після створення його значення не можна змінити.

Додаткові елементи не можна додавати, а наявні елементи не можна видаляти. Таким чином, кортеж ідеально підходить для зберігання даних, які не змінюються. Це може бути навіть набір даних різних типів. У наступному розділі ми обговоримо різні способи створення кортежів у Python.

Як створити кортеж у Python?

Існує щонайменше три способи створення кортежів у Python. У цьому розділі ми розглянемо три найпоширеніші методи, які ви, ймовірно, будете використовувати та бачити під час читання коду інших.

Щоб запустити наведені нижче приклади коду, вам потрібно буде встановити Python. Якщо у вас ще не встановлено Python, ось корисний посібник із встановлення Python. Крім того, ви можете запустити свій код у середовищі виконання Python онлайн, наприклад Google Colab.

#1. Використання літералу кортежу (дужки)

Найпоширенішим способом побачити кортежі, визначені в Python, є розміщення набору значень між дужками. Ці значення розділяються комами. Наступний приклад ілюструє цей метод:

# Creates a tuple by placing values between parentheses
values = (1, 2, 3)

# Printing out the tuple to the screen
print(values)

# Printing out the type of values variable
print(type(values))

Запуск цього коду призведе до наступного:

Як ви можете бачити з результату, кортеж містить значення, якими ми його ініціалізували. Він також належить до типу .

Коли ви створюєте кортежі в Python, дужки не потрібні. Тому ці значення = 1, 2, 3 є такими ж дійсними, як і ці значення = (1, 2, 3). Проте рекомендується використовувати круглі дужки, щоб зробити код більш зрозумілим.

Створення кортежів з одним елементом у Python є дещо складним. Замість простого розміщення одного елемента між дужками, вам також потрібно додати кінцеву кому. Ось приклад для ілюстрації:

# Without trailing comma, this won't create a tuple
not_a_tuple = (1)

# With trailing comma, this will create a tuple
a_tuple = (1,)

# Printing not_a_tuple
print(not_a_tuple)

# Printing not_a_tuple's data type
print(type(not_a_tuple))

# Printing a_tuple
print(a_tuple)

# Printing a_tuple's data type
print(type(a_tuple))

Запустивши наведений вище код, ви побачите, що not_a_tuple стає int зі значенням 1. Це важливо мати на увазі під час створення кортежів.

#2. Використання функції конструктора

Другий метод створення кортежів у Python використовує функцію конструктора кортежів. У цьому методі ви викликаєте функцію, передаючи ітерований об’єкт, наприклад список, як аргумент. Це буде перетворено на кортеж. Ось приклад:

# Creating tuple from a list of values
values = tuple([1, 2, 3])

# Printing out the values
print(values)

# Printing out the data type of the values identifier
print(type(values))

Як бачите, використання функції дає такий самий результат, як і використання літералу. Однак функція дає змогу створити кортеж на основі динамічного значення, наприклад списку, значення якого відомі лише під час виконання. У першому методі під час написання коду ви повинні знати значення або ідентифікатори, які складають ваш кортеж.

  9 найкращих інструментів маскування даних для анонімності та безпеки

#3. Створення порожнього кортежу

Коли ви працюєте з кортежами у своєму коді, вам може знадобитися створити порожні кортежі. Порожні кортежі створюються так, як ви очікували. Під час їх створення можна використовувати або конструктор кортежу, або літерал to. Ось приклад, який демонструє використання будь-якого методу:

# Using the tuple literal
empty_tuple_1 = ()

# Using the constructor
empty_tuple_2 = tuple()

Порожні кортежі корисні при представленні порожнього набору результатів. Розглянемо таку функцію:

def create_range(start, end):
    return tuple(range(start, end))

Ця функція створює кортеж із значеннями від початку до кінцевого значення, яке ви передаєте. Якщо ви хочете повторити результати функції, ви можете використати щось на зразок цього:

my_values = create_range(0, 5)

for value in my_values:
    pass

Якщо ви вказали 5 і 5 для функції create_range, результатом буде порожній кортеж. І якщо ви спробуєте його перебрати, у вас буде нуль ітерацій, і ваш код працюватиме як звичайно.

З іншого боку, якщо не було порожніх кортежів, а замість цього ви отримали значення None, то спроба повторити його викличе помилку. Щоб запобігти аварійному завершенню програми, вам доведеться виконати перевірку крайнього випадку, коли функція create_range повертає None або будь-яке інше значення, яке представляє порожній кортеж.

Це призведе до безладного коду. В ідеалі ви хотіли б уникати особливих випадків, наскільки це можливо. Це означає, що повертане значення всіх функцій повинно мати ідентичний інтерфейс, щоб ваш код якомога більше працював у загальному випадку. У цьому випадку це означає постійно повертати кортеж, хоча інколи він буде порожнім.

Як отримати доступ до елементів

У Python є два способи доступу до елементів кортежу. Перший спосіб – за індексом, а другий – за допомогою деструктуризації елементів. Спочатку ми розглянемо, як отримати доступ до елементів за індексом.

Доступ до елементів за індексом

Доступ до елементів за індексом подібний до того, як ви отримуєте доступ до елементів списку за індексом. Це робиться за допомогою нотації в квадратних дужках. Для кортежів використовується система індексування від нуля, тобто перший елемент має індекс 0, а наступний – індекс 1 до останнього елемента.

Наведений нижче приклад демонструє, як отримати доступ до елементів за індексом:

# Creating a tuple
values = (1, 2, 3, 4)

# Accessing the first element
first_element = values[0]

# Accessing the fourth element(index 3)
fourth_element = values[3]

Ви також можете використовувати негативну індексацію. Елемент з індексом -1 є останнім елементом, а елемент з індексом -2 – другим від останнього.

# Creating the tuple
values = (1, 2, 3, 4)

# Accessing the last element
last_element = values[-1]

# Accessing the second from last element
second_from_last_element = values[-2] 

Крім того, ви також можете отримати доступ до підколекції елементів із кортежу, розрізавши його. Це схоже на те, як ви б розділили список. Позначення наступне: <кортеж>[<start>: <end>: <skip>]. Наступний приклад демонструє нарізку:

# Creating the tuple
values = (1, 2, 3, 4, 5, 6, 7)

# Getting the first three elements
values[1: 3]

# Getting every other element
values[::2]

Ітерація елементів

Кортеж — це повторюваний об’єкт у Python. Тому ви можете перебирати його елементи за допомогою циклу for, як показано в наступному прикладі:

values = (1, 2, 3, 4)

for value in values:
    print(value)

Цей метод доступу до елементів є ідеальним, якщо ви хочете отримати доступ до всіх елементів у кортежі.

Доступ до елементів шляхом деструктурування

Щоб пояснити деструктуризацію, розглянемо наступний сценарій, де ми намагаємося отримати різні елементи в кортежі.

# Creating the tuple to record a user's information
person_record = (1, 'John Doe', '[email protected]')

# Accessing the different elements in the tuple to use in our code
id = person_record[1]
name = person_record[2]
email = person_record[3]

Python дозволяє нам використовувати більш зручний метод доступу до значень, як показано нижче:

# Creating the tuple to record a user's information
person_record = (1, 'John Doe', '[email protected]')

id, name, email = person_record

Це називається деструктуризацією. Тобто першій змінній, у цьому випадку id, буде присвоєно перше значення в кортежі, а другій змінній – другому елементу. Це продовжується до кінця кортежу. Наведений вище приклад еквівалентний цьому:

id, name, email = (1, 'John Doe', '[email protected]')

У цьому випадку замість того, щоб зберігати кортеж у змінній, ми негайно його деструктуруємо. Якщо ви поєднаєте це зі знанням про те, що вам не потрібно використовувати дужки під час створення кортежів, тоді ви зможете написати код таким чином.

id, name, email = 1, 'John Doe', '[email protected]'

Наприкінці всього цього ви матимете змінні id, name та email зі значеннями 1, “John Doe” і “[email protected]‘. Це зручний і стислий спосіб створення змінних у Python, які ви побачите у робочому коді. Корисно знати, що в основі цього елегантного синтаксису лежить концепція кортежів.

  Посібник і безкоштовні шаблони [2022]

Відмінності між кортежем і списком

Хоча вони схожі, деякі ключові відмінності роблять кожен з них більш придатним для конкретного випадку використання. Розуміння цих відмінностей допоможе вам вибрати найкращий тип даних для використання та написати кращий і ефективніший код.

AspectTupleListMemory StorageЗберігається в безперервній пам’ятіЗберігається в різних частинах пам’ятіЗмінністьНезмінний (неможливо змінити)Змінний (можна змінити)ШвидкістьДоступ швидшийДоступ повільніший Тип данихЗвичайно зберігає дані різних типівЗвичайно зберігає дані одного типуВикористовуйте випадкиЗазвичай використовується для зберігання колекції подібних значень, як-от marks. Зазвичай використовується для зберігання колекції подібних значень, таких як позначки.

Переваги кортежу

#1. Це швидше

Через те, як значення кортежу зберігаються в безперервній пам’яті, доступ до значень відбувається швидше, ніж до списку. Однак, оскільки після створення вони не можуть бути змінені, кортежі не завжди є найкращою структурою даних для зберігання колекцій значень.

Ідеальним випадком їх використання є зберігання великої кількості даних у пам’яті, які не змінюються, але доступ до них буде здійснюватися кілька разів під час виконання програми. У цьому випадку ваша програма отримає величезну користь від збільшення продуктивності кортежів.

#2. Повернути декілька значень

Ви можете використовувати кортежі для повернення кількох значень із функції та деструктурування результату. Наприклад:

from random import randint

def create_two_numbers():
    first_num = randint(0, 9)
    second_num = randint(0, 9)

    return first_num, second_num

first_num, second_num = create_two_numbers()

У цьому прикладі ми маємо функцію, яка створює два випадкових числа та повертає їх обидва в кортежі. Інструкція return first_num, second_num еквівалентна написанню return (first_num, second_num). Це тому, що дужки необов’язкові під час створення кортежів. Щоб отримати доступ до результату, ми його деструктуруємо.

#3. Значення захищені від запису

Кортежі незмінні після створення. Тому вони ідеально підходять для зберігання даних у пам’яті, які не змінюються під час виконання програми. Вони гарантують, що ви випадково не перезапишете дані в іншому місці свого коду.

#4. Зберігайте кілька типів даних

Кортежі дозволяють зберігати значення кількох типів даних. Це дозволяє створювати записи даних, наприклад зберігати дані користувача в кортежі. Ви також можете зберігати більш складні елементи, такі як функції, словники, інші кортежі та навіть списки.

Поширені методи кортежу

#1. рахувати()

Об’єкт кортежу містить метод count, який підраховує, скільки разів елемент зустрічається. Наприклад:

# Creating a tuple with several numbers
values = (1, 2, 3, 4, 5, 4, 4, 6)

# Counting the number of fours
n_fours = values.count(4)

# Prining out the number of fours
print(n_fours)

З цього прикладу ми бачимо, що число 4 зустрічається рівно тричі в нашому кортежі.

  Як видалити себе з Інтернету

#2. індекс()

Метод індексу можна використовувати для пошуку індексу першого входження значення в кортеж. Якщо значення не існує, буде створено виняток ValueError. Ось код, щоб проілюструвати, як працює метод індексу:

# Creating a tuple with several numbers
values = (1, 2, 3, 4, 5, 4, 4, 6)

# Search for index of 4
index_of_four = values.index(4)
print("Index of four:", index_of_four)

# Search for index of 9
index_of_nine = values.index(9)
print("Index of nine:", index_of_nine)

І коли ми запускаємо код вище, це результат:

У цьому випадку індекс 4 дорівнює 3, і код виконувався без проблем. Але коли потрібно було знайти індекс 9, програма викликала виняток. Важливо обробляти такі винятки, коли ви пишете програми на Python, які використовують метод індексу.

#3. len()

Як і всі повторювані об’єкти в Python, кортежі мають властивість length, до якої можна отримати доступ, якщо передати кортеж як аргумент функції len().

# Creating a tuple
values = (1, 2, 3, 4)

# Getting the length
length = len(values)

# Print the output
print(length)

Це результат виконання наведеного вище коду.

#4. min() і max()

Методи min і max працюють шляхом циклічного проходження кожного елемента в ітерації та порівняння, чи є він більшим або меншим за попередній. Зрештою, max поверне найбільший елемент у ітерації, тоді як min поверне найменший.

З числами операція очевидна. Для рядків Python використовуватиме алфавітний порядок. Найменше слово, яке повертає min, є першим словом, якщо рядки були записані в алфавітному порядку. Тоді як найбільше слово є останнім словом. Якщо iterable містить суміш різних типів даних, то обидві операції завершаться помилкою, оскільки Python не знає, як порівнювати різні типи даних.

Ось приклад коду:

# Creating tuple with values
values = (1, 2, 3, 4, 5)

# Getting the largest value
largest = max(values)

# Getting the smallest value
smallest = min(values)

# Output the results
print(largest)
print(smallest)

#5. відсортовано()

Функція sorted у Python приймає ітерований об’єкт і повертає список відсортованих елементів. Ви можете викликати функцію sorted, передати кортеж як аргумент і отримати елементи кортежу, відсортовані в списку. Щоб перетворити відсортований список на кортеж, можна скористатися функцією конструктора. Ось приклад:

# Creating a tuple with values in random order
values = (1, 5, 3, 3, 2, 4)

# Using sorted to sort the values into a list
sorted_list = sorted(values)

# Converting the list into a tuple
sorted_tuple = tuple(sorted_list)

# Printing the output
print(sorted_tuple)

#6. Додавання та множення кортежів

Операція додавання двох кортежів просто об’єднує їх разом. Операція множення повторює елементи кортежу стільки разів, скільки значення, на яке ви помножили. Ось приклад для ілюстрації двох прикладів.

# Create a tuple with some values
values = (1, 2, 3, 4, 5)

# Create a new tuple using addition
added = values + values

# Create a new tuple using multiplication
multiplied = values * 2

print("values + values =", added)
print("values * 2 =", multiplied)

Заключні слова

У цій статті ви дізналися, що:

  • Кортежі — це спископодібні об’єкти, які використовуються для зберігання колекцій значень.
  • На відміну від списків, вони незмінні.
  • Вони швидші й ефективніші, ніж списки.
  • Їх можна побудувати за допомогою круглих дужок і розділення значень комами.
  • Їх також можна побудувати за допомогою функції конструктора кортежу.
  • Ви можете отримати доступ до окремих значень за допомогою системи індексів від нуля.
  • Ви також можете деструктурувати значення з кортежу.
  • Ви також можете перебирати значення за допомогою циклу for.
  • Різні методи, які можна використовувати з кортежем.

Далі ви можете ознайомитися з додатковим вмістом Python, наприклад методами списку Python і методами словника Python.