Код #Статьи

23 августа, 2025

Кортежи (tuple) в Python: методы, создание, сортировка, сравнение, добавление элементов / Skillbox Media

База «змееуста»: работаем с индексами, сравниваем и перебираем элементы.

Курс с трудоустройством: «Профессия Python-разработчик»

Узнать больше

Кортежи (tuple) в Python хранят последовательности элементов, и этим они похожи на списки. Но между этими двумя структурами есть серьёзные различия. Сегодня мы разберёмся в них и научимся работать с кортежами.

Вы узнаете:

  • Что такое кортежи
  • Когда их использовать
  • Как работать с кортежами в Python
  • Как их создать
  • Как получить доступ к элементу по индексу
  • Как упаковать и распаковать кортеж
  • Как их сравнить между собой
  • Как проверить принадлежность элемента
  • Как перебрать элементы кортежа
  • Как удалить кортеж
  • Как их сложить и перемножить
  • Какие функции для них существуют
  • Определение длины, суммы, минимального и максимального элемента
  • Сортировка кортежа
  • Срезы для получения элементов
  • Преобразование кортежа в другие типы данных
  • Изменение элементов кортежа

Что такое кортежи

Кортежи (тип tuple) — это неизменяемый тип данных в Python, который используется для хранения упорядоченной последовательности элементов.

У этих коллекций есть три замечательных свойства:

Неизменяемость. После того как кортеж создан, в него нельзя добавлять элементы, а также изменять их или удалять. При попытке это сделать интерпретатор выдаст ошибку TypeError.

Упорядоченность. Элементы кортежа располагаются в определённом порядке, который тоже неизменяем. К любому элементу можно обратиться по его индексу (порядковому номеру).

Элементами кортежа могут быть объекты разных типов данных: числа, строки, списки, другие кортежи и другие. Элементы-коллекции могут иметь неограниченную глубину вложенности. Например, кортеж может включать в себя список, который будет содержать другой список, который вновь будет содержать список и так далее.

Кортежи записываются с использованием круглых скобок ():

my_tuple — имя переменной, которой присваивается кортеж.

(значение1, значение2…) — это сам кортеж, который содержит элементы значение1, значение2 и так далее.

Они могут состоять из элементов разных типов и их сочетаний:

Когда использовать кортеж

Применение кортежей связано с их свойствами — неизменяемостью и строгим порядком элементов. Разберём ситуации, когда это полезно.

Если нужно защитить данные от случайного или намеренного изменения, то можно использовать кортежи. Например, этот тип данных подойдёт для сохранения информации о датах рождения клиентов.

Обратите внимание: неизменяемость кортежей не абсолютна. У неё есть исключение — если внутри кортежа находятся изменяемые элементы, например списки, словари или множества, то их значения можно изменить.

Например:

Результат выполнения кода:

Как видите, никакой ошибки нет, хотя кортеж изменился.

Кортежи занимают в памяти меньше места, чем списки. Это легко проверить:

В результате выполнения кода получим:

Кортеж занимает в памяти на 16 байт меньше, чем список. Из-за малой величины сравниваемых объектов разница почти незаметна, но при работе с данными большего объёма экономия может быть значимой.

Кортежи идеально подходят для использования в качестве ключей в словарях, так как ключи в них должны быть объектами неизменяемого типа данных. Проверим это:

В результате получим:

С кортежем словарь работает. Если попытаться в качестве ключа использовать список, то возникнет ошибка, так как списки — изменяемый тип данных.

Как работать с кортежами в Python

Рассмотрим основные операции с кортежами.

Создать кортеж в Python можно по меньшей мере пятью способами. Рассмотрим каждый из них.

  • С помощью круглых скобок:
  • Без круглых скобок:
  • Используя встроенную функцию tuple():
  • С помощью оператора упаковки, который мы разберём дальше:
  • Из итерируемого элемента, например строки, с помощью функции tuple():

Можно создать пустой кортеж:

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

Кортеж — это упорядоченная последовательность. Поэтому для доступа к его элементам можно использовать индексы.

Индексация начинается с нуля и заканчивается значением, равным длине кортежа, уменьшенным на единицу:

Для доступа к элементам с конца кортежа можно использовать отрицательные индексы. В этом случае индексация начинается с -1 и заканчивается значением, равным длине кортежа со знаком минус.

Напишем код:

Чтобы обратиться ко вложенным элементам, используйте двойную индексацию:

Разберём код. Кортеж nested_tuple содержит вложенный кортеж (3, 4). Для доступа к элементам вложенного кортежа используем двойную индексацию: nested_tuple[2][0] обращается к первому элементу вложенного кортежа, а nested_tuple[2][1] обращается ко второму элементу.

Упаковка (packing) и распаковка (unpacking) — это операции, которые позволяют создавать кортеж из набора значений и извлекать значения из кортежа в переменные. Рассмотрим их подробнее.

Упаковка кортежа. Значения 1, 2, 3 и ‘hello’ автоматически упаковываются в кортеж:

Распаковка кортежа. Элементы кортежа извлекаются в переменные:

Обмен значениями между переменными. С помощью упаковки и распаковки кортежей можно обменять значения переменных между собой без использования временной переменной.

Посмотрим пример кода:

Операция упаковки (y, x) сначала создаёт кортеж из двух значений (10, 5), затем операция распаковки (x, y) распаковывает кортеж и присваивает значения переменным x и y соответственно. Теперь переменная x содержит 10, а y содержит 5.

Кортежи в Python сравниваются покомпонентно начиная с первого элемента до первого неравенства или до конца переменной. Если кортежи имеют одинаковую длину и все соответствующие элементы равны, то они считаются равными:

Для сравнения используются стандартные операторы ==, !=, >, <, >=, <=.

При сравнении используются правила:

  • когда сравниваются числовые элементы, большим считается тот кортеж, у которого первый отличающийся элемент больше;
  • когда сравниваются строки, сравнение происходит по порядку в алфавите;
  • элементы различных типов сравнивать нельзя — получим ошибку TypeError;
  • если длины кортежей различны, то кортеж с меньшей длиной считается наименьшим.

Пример:

Чтобы проверить, принадлежит ли элемент кортежу, используется оператор in. Если элемент присутствует в кортеже, оператор возвращает True, в противном случае — False.

Для перебора элементов кортежа в Python используется цикл for или while:

Код выводит каждый элемент кортежа my_tuple на новой строке.

Удалять из кортежа элементы нельзя, но можно удалить его полностью с помощью ключевого слова del:

В этом примере del my_tuple удаляет ссылку на кортеж из памяти. После этого переменной my_tuple больше не существует и попытка обратиться к ней вызовет ошибку NameError.

В Python для кортежей доступны операции конкатенации (сложения) и повторения (умножения). Эти операции могут использоваться при создании новых кортежей на основе существующих.

Конкатенация. Это объединение двух кортежей в один новый кортеж с помощью оператора +.

Напишем код:

Результат:

Повторение. Этот способ создания кортежа напоминает арифметическое умножение: справа от исходного кортежа нужно добавить оператор * и указать, сколько раз он повторится.

Результат выполнения кода:

При выполнении операций конкатенации и повторения создаются новые кортежи, а исходные остаются неизменными.

Функции кортежей Python

В Python есть встроенные функции, которые облегчают работу с кортежами.

Во многих статьях можно встретить формулировку «методы кортежей», но это не совсем корректно. Метод — это понятие из объектно-ориентированного программирования, обозначающее функцию или процедуру, принадлежащую к какому-либо классу или объекту. Ниже мы говорим про функции, которые принимают и возвращают значения, без привязки к классам или объектам.

Длину кортежа можно получить функцией len(), которая возвращает количество элементов в кортеже:

Результат:

Сумма элементов рассчитывается легко запоминающейся функцией sum():

Результат:

Если кортеж пуст, len() и sum() возвращают 0.

Минимальный и максимальный элементы кортежа можно получить с помощью функций min() и max():

Результат выполнения:

Если кортеж пуст, то использование функций min() и max() вызовет ошибку ValueError.

Во многих статьях можно встретить формулировку «методы кортежей», но это не совсем корректно. Метод — это понятие из объектно-ориентированного программирования, обозначающее функцию или процедуру, принадлежащую к какому-либо классу или объекту. Ниже мы говорим про функции, которые принимают и возвращают значения, без привязки к классам или объектам.

Элементы можно отсортировать по возрастанию или по убыванию. Так как кортежи относятся к неизменяемому типу данных, то кортеж с упорядоченными элементами нужно будет сохранить в новой переменной.

Для сортировки используется функция sorted():

Результат:

Остановимся на коде:

  • sorted(original_tuple) создаёт новый список, содержащий отсортированные элементы из original_tuple;
  • tuple(…) создаёт новый кортеж из отсортированного списка.

Если нужна сортировка в обратном порядке, в функции sorted() используется параметр reverse=True:

Получаем:

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

Для определения начала и конца среза можно использовать положительные и отрицательные индексы:

  • левый индекс указывает на элемент, с которого начинается срез;
  • правый индекс указывает на элемент, которым заканчивается срез, этот элемент в срез не включается.

Получим срез, указав положительные индексы:

Результат:

Срез с отрицательными индексами:

Результат:

Если индексы пропущены, то срез будет включать все элементы от начала кортежа до заданного конца среза или от заданного начала среза до конца кортежа:

Результат:

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

Так можно превратить кортеж в список:

Результат:

А так можно преобразовать кортеж в строку:

Здесь использовали встроенную функцию str.join. Работает она просто — переводит каждый элемент кортежа в строковый тип, а затем объединяет их в одну строку.

Результат:

Преобразовать кортеж во множество:

Результат:

Множества — это неупорядоченные коллекции, которые состоят из уникальных элементов. Если преобразовать кортеж во множество, то все дубликаты в нём удалятся.

Кортеж в словарь (пары «ключ — значение»):

Результат:

Хотя кортежи относятся к неизменяемым элементам, есть трюк, который позволяет их изменять. Для этого нужно перевести кортеж в список, сделать необходимые преобразования, а затем превратить полученный список в кортеж:

Результат:

Другой подоход — создать новый кортеж с изменёнными значениями:

Результат:

В этом примере создаём новый кортеж updated_tuple, включая все элементы кортежа my_tuple с начала до второго, добавляем к ним новое значение 10, а затем добавляем все элементы my_tuple начиная с четвёртого и до конца.

Мы рассмотрели только базовые понятия и операции с кортежами. Если вы хотите погрузиться в работу с ними глубже, то советуем перейти к документации. И обязательно пишите код из примеров в своём редакторе кода или IDE — это поможет закрепить теорию.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Читайте также:

  • Словари в Python: что нужно знать и как пользоваться
  • История чат-ботов: от Shoebox до ChatGPT
  • Методы и функции строк в Python

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!