Кортеж (інформатика)

Корте́ж або n-ка — в математиці впорядкована та скінченна сукупність елементів (нескінченний кортеж має назву сімейства)[1].

Кількість елементів в кортежі визначає його довжину. Так, кортеж з двох елементів (тобто довжини 2) називається двійкою, з трьох елементів — трійкою і т. д. Кортеж з n елементів називається n-кою.

Формальне означення

Головною властивістю кортежу, яка відрізняє його від множини є те, що, по-перше, кортеж може містити декілька екземплярів одного об'єкта (в множині однакові об'єкти не розрізняються, і ця властивість також відрізняє кортеж від впорядкованої множини), та, по-друге, об'єкти в кортежі впорядковані. Це твердження формалізується таким чином:

(a1, a2, …,an) = (b1, b2, …, bn) ⇔ a1 = b1, a2 = b2an = bn

Часто кортеж з n елементів визначається індуктивно через впорядковану пару, тобто n-ка (де n > 2) визначається як впорядкована пара її першого елемента, та кортеж з n-1 її останніх елементів:

(a1, a2, …, an) = (a1, (a2, …, an))

Тобто:

  1. 0-кортеж (тобто порожній кортеж) визначається як ∅
  2. якщо x є n-ка, то {{a}, {a, x}} є (n + 1)-ка.

Наприклад, для трійки (1,2,2) це призводить до наступного визначення:

(1,(2,(2,()))) = (1,(2, {{2}, {2, ∅}} )) = (1, {{2}, {2, {{2}, {2, ∅}}}} ) = {{1}, {1, {{2}, {2, {{2}, {2, ∅}}}}}}

У програмуванні

У деяких мовах програмування, наприклад, Python або ML, кортеж — особливий тип даних. У мові Python кортеж (англ. tuple) відрізняється від списку тим, що елементи кортежу не можна змінювати.

a = (1, 2, 3, 2)
print a[1]
a[1] = 5 #Помилка

Ця програма на Python 2.7, яка використовує кортеж a, виведе помилку в 3-му рядку: TypeError: 'tuple' object does not support item assignment.

У мовах програмування зі статичною типізацією кортеж відрізняється від списку тим, що елементи кортежу можуть належати різним типам і набір таких типів заздалегідь визначено типом кортежу, а отже і розмір кортежу також визначено. З іншого боку, колекції (списки, масиви) мають обмеження за типом збережених елементів, але не мають обмеження за довжиною. У функційних мовах некарінговані функції декількох аргументів приймають параметри у вигляді одного аргументу, що є кортежем. У мові C++ підтримка кортежів реалізована як шаблон класу std :: tuple (починаючи з C++ 11) і в бібліотеці Boost Tuple Library. Кортеж є стандартним типом в платформі .NET починаючи з версії 4.0.

У базах даних

У реляційних базах даних, кортеж — це елемент відношення. Для N-арного відношення кортеж є упорядкованим набором з N значень, по одному значенню для кожного атрибута відношення.

Див. також

Посилання

  1. Сигорский, Виталий Петрович (1977). Математический аппарат инженера (Російською) . Київ: Техніка. с. 95—97.