Войти  |  Регистрация
Авторизация

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



Кортеж — упорядоченный набор фиксированной длины.

В математике

Пусть даны множества A 1 , A 2 , … , A n {displaystyle A_{1},A_{2},ldots ,A_{n}} , не обязательно различные.

Тогда кортеж длины n, упорядоченный набор длины n, упорядоченный n-набор или n-ка — упорядоченная последовательность из n элементов x 1 , x 2 , … , x n , {displaystyle x_{1},x_{2},ldots ,x_{n},} где x i ∈ A i {displaystyle x_{i}in A_{i}} для 1 ⩽ i ⩽ n . {displaystyle 1leqslant ileqslant n.} Кортеж обозначается перечислением координат в угловых или круглых скобках:

⟨ x 1 , x 2 , … , x n ⟩ {displaystyle langle x_{1},x_{2},ldots ,x_{n} angle }

или

( x 1 , x 2 , … , x n ) . {displaystyle (x_{1},x_{2},ldots ,x_{n}).}

Элемент x i {displaystyle x_{i}} называется i-й координатой (проекцией, компонентой) кортежа ⟨ x 1 , x 2 , … , x n ⟩ . {displaystyle langle x_{1},x_{2},ldots ,x_{n} angle .}

Число n называют длиной или размерностью кортежа.

Два кортежа равны, если равны их длины и соответствующие элементы:

⟨ a 1 , … , a n ⟩ = ⟨ b 1 , … , b n ⟩ , {displaystyle langle a_{1},ldots ,a_{n} angle =langle b_{1},ldots ,b_{n} angle ,} если a i = b i , i = 1 , n ¯ . {displaystyle a_{i}=b_{i},i={overline {1,n}}.}

Пример кортежа — арифметический вектор.

Декартово произведение n множеств — множество всех кортежей длины n, координаты которых взяты из этих множеств:

A 1 × … × A n = { ⟨ x 1 , … , x n ⟩ ∣ x i ∈ A i , i = 1 , n ¯ } . {displaystyle A_{1} imes ldots imes A_{n}={langle x_{1},ldots ,x_{n} angle mid x_{i}in A_{i},i={overline {1,n}}}.}

Кортежи длины 2, 3, 4, 5, … также носят названия «упорядоченная пара», «упорядоченная тройка», «упорядоченная четвёрка», «упорядоченная пятёрка» и т. д.

Определения в теории множеств

В рамках теории множеств кортежи можно индуктивно поставить в соответствие множествам, например, следующим образом:

  • ⟨ ⟩ ⇌ ∅ , {displaystyle langle angle ightleftharpoons emptyset ,}
  • ⟨ x 1 ⟩ ⇌ x 1 , {displaystyle langle x_{1} angle ightleftharpoons x_{1},}
  • ⟨ x 1 , x 2 ⟩ ⇌ { { x 1 } , { x 1 , x 2 } } , {displaystyle langle x_{1},x_{2} angle ightleftharpoons {{x_{1}},{x_{1},x_{2}}},}
  • ⟨ x 1 , x 2 , x 3 ⟩ ⇌ ⟨ ⟨ x 1 , x 2 ⟩ , x 3 ⟩ , {displaystyle langle x_{1},x_{2},x_{3} angle ightleftharpoons langle langle x_{1},x_{2} angle ,x_{3} angle ,}
  • ⟨ x 1 , x 2 , x 3 , x 4 ⟩ ⇌ ⟨ ⟨ x 1 , x 2 , x 3 ⟩ , x 4 ⟩ , … {displaystyle langle x_{1},x_{2},x_{3},x_{4} angle ightleftharpoons langle langle x_{1},x_{2},x_{3} angle ,x_{4} angle ,ldots }
  • ⟨ x 1 , … , x n ⟩ ⇌ ⟨ ⟨ x 1 , … , x n − 1 ⟩ , x n ⟩ . {displaystyle langle x_{1},ldots ,x_{n} angle ightleftharpoons langle langle x_{1},ldots ,x_{n-1} angle ,x_{n} angle .}

Определение других объектов через кортежи

Многие математические объекты формально определяются как кортежи. Например, ориентированный граф определяется как пара ⟨ V , E ⟩ , {displaystyle langle V,E angle ,} где V — это множество вершин, а E — подмножество пар в V × V , {displaystyle V imes V,} соответствующих дугам графа. Точка в n-мерном пространстве действительных чисел определяется как кортеж длины n, составленный из элементов множества действительных чисел.

Ориентированный мультиграф со множеством вершин V, множеством дуг E и отношением инцидентности P ⊆ V × E × V {displaystyle Psubseteq V imes E imes V} может быть определён как упорядоченная тройка ⟨ V , E , P ⟩ , {displaystyle langle V,E,P angle ,} причём ⟨ a , e , b ⟩ ∈ P {displaystyle langle a,e,b angle in P} тогда и только тогда, когда дуга e выходит из вершины a и заходит в вершину b.

В программировании

В некоторых языках программирования, например, Python или ML, кортеж как тип данных встроен в язык. Пример использования кортежа в языке Python:

a = (1, 3.14, 'cat') print(a[0]) # Напечатать первый элемент кортежа

В языках программирования со статической типизацией кортеж отличается от списка тем, что элементы кортежа могут принадлежать разным типам и набор таких типов заранее определён типом кортежа, а значит, и размер кортежа также определён. С другой стороны, коллекции (списки, массивы) имеют ограничение по типу хранимых элементов, но не имеют ограничения на длину. Так, например, в языке Rust функция может вернуть несколько значений с помощью упаковки в кортеж:

fn div_with_remainder(a: i32, b: i32) -> (i32, i32, String) { let tmp = (a/b, a%b); (tmp.0, tmp.1, format!("{} + {}", tmp.0, tmp.1)) } let (res, rem, repr) = div_with_remainder(5,2);

В функциональных языках некаррированные функции нескольких аргументов принимают параметры в виде одного аргумента, являющегося кортежем.

В языке C++ поддержка кортежей реализована как шаблон класса std::tuple (начиная с C++11) и в библиотеке Boost Tuple Library.

Кортеж является стандартным типом в платформе .NET начиная с версии 4.0.

В базах данных

В реляционных базах данных кортеж — это элемент отношения. Для N-арного отношения кортеж представляет собой упорядоченный набор из N значений, по одному значению для каждого атрибута отношения.


Добавить комментарий
Ваше Имя:
Ваш E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent