Перейти до змісту

Тип даних tuple

Ще одна структура даних в Python — кортеж.

Кортеж (англ. tuple) в Python— це послідовність елементів будь-яких типів.

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

>>> my_tuple = (1, 'two', 3, '4', 55555, True)
>>> my_tuple
(1, 'two', 3, '4', 55555, True)
>>>

Пустий кортеж:

>>> t=()
>>> type(t)
<class 'tuple'>
>>>

Кортеж з одним елементом:

>>> t = (1,)
>>> t
(1,)
>>>

Дужки можна опускати:

>>> t = 1, 2, 'three'
>>> t
(1, 2, 'three')
>>> type(t)
<class 'tuple'>
>>> t = 'element',
>>> t
('element',)
>>>

Елементи кортежу мають визначений порядок, так само, як і в списку. Так само індексація починається з нуля.

>>> (1, 2, 3)[1]
2
>>>

Від'ємні індекси діють так само, як у списків.

>>> (1, 2, 3, 'last')[-1]
'last'

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

Основна відмінність між списками та кортежами: кортежі не можна змінювати. Технічно — вони незмінні. Практично — вони не мають засобів,які б дозволили вам змінити їх.

>>> t = (1, 2, 3)
>>> t[0] = 7
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>

Навіщо так зроблено? Деколи є необхідність об'єднати якісь дані в одну структуру, і треба щоб ця структура даних ніколи не могла би бути зміненою. Тоді дані об'єднують у кортеж. В інших випадках є необхідність при потребі змінити дані у структурі, і тоді використовують списки.

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

>>> person = ('Іван', 'Петренко', 23)
>>>

До кожного елемента створеної структури можна "дістатись" за допомогою індексації, і кожен елемент є окремою сутністю:

>>> first_name = person[0]
>>> first_name
'Іван'
>>> last_name = person[1]
>>> last_name + ' ' + first_name[0] + '.'
'Петренко І.'
>>>

Якщо ж необхідно об'єднати в одну структуру однаманітні дані, тоді, швидше за все, варто використовувати список. Наприклад список чисел, список книг, список адрес електроної пошти, список контактів.