Кортеж в Python — неизменяемая структура данных, подобная списку. Как и список, он представляет собой упорядоченную последовательность объектов различных типов.
Создание кортежей
Пустой кортеж создаётся функцией tuple():
x = tuple()
print(type(x)) # <class 'tuple'>
Заполненный кортеж создаётся с помощью круглых скобок и перечисления элементов:
кортеж = (12, 56, 100, "Hello")
print(кортеж) # (12, 56, 100, 'Hello')
print(type(кортеж)) # <class 'tuple'>
Для создания кортежа из одного элемента необходима запятая после элемента:
кортеж_один_элемент = (12,)
print(type(кортеж_один_элемент)) # <class 'tuple'>
Без запятой Python интерпретирует выражение как число:
не_кортеж = (12)
print(type(не_кортеж)) # <class 'int'>
Круглые скобки при создании кортежа с одним элементом необязательны:
кортеж_без_скобок = 12,
print(type(кортеж_без_скобок)) # <class 'tuple'>
Рекомендуется использовать круглые скобки для явного указания типа данных.
Создание кортежей из итерируемых объектов
Кортеж можно создать из итерируемого объекта с помощью функции tuple():
кортеж_из_строки = tuple("Hello")
print(кортеж_из_строки) # ('H', 'e', 'l', 'l', 'o')
В tuple() можно передать список или другой итерируемый объект.
Упаковка и распаковка
Присваивание кортежа переменной — упаковка:
кортеж = (12, 45, 60)
Распаковка — присваивание значений элементов кортежа отдельным переменным:
x, y, z = кортеж
print(x, y, z) # 12 45 60
Несовпадение количества переменных и элементов кортежа вызывает ошибку. Оператор * собирает остаточные элементы в список:
x, y, z, *t = (12, 45, 60, 50, 1000)
print(x, y, z, t) # 12 45 60 [50, 1000]
Обмен значениями переменных
Распаковка упрощает обмен значениями двух переменных:
x, y = 5, 10
x, y = y, x
print(x, y) # 10 5
Доступ к элементам
К элементам кортежа можно обращаться по индексу:
кортеж = (12, 45, 60, 50, 1000)
print(кортеж[1]) # 45
print(кортеж[-1]) # 1000
Используются срезы для доступа к группам элементов:
print(кортеж[1:4]) # (45, 60, 50)
print(кортеж[1:4:2]) # (45, 50)
Проверка наличия элемента
Оператор in проверяет наличие элемента в кортеже:
print(12 in кортеж) # True
print(100 in кортеж) # False
Вложенные кортежи
Кортежи могут быть вложенными:
вложенный_кортеж = (1, 2, (87, 99))
print(вложенный_кортеж[2][0]) # 87
Неизменяемость кортежа не распространяется на элементы вложенных списков:
кортеж_со_списком = (1, 2, [87, 99])
кортеж_со_списком[2][0] = 100
print(кортеж_со_списком) # (1, 2, [100, 99])
Сравнение кортежей
Кортежи сравниваются поэлементно:
x = (1, 2, 3)
y = (2, 4, 1)
print(x < y) # True
Итерация
Цикл for перебирает элементы кортежа:
for элемент in кортеж:
print(элемент)
Удаление кортежа
Оператор del удаляет кортеж:
del кортеж
Сортировка
sorted() возвращает отсортированный список:
отсортированный_список = sorted(кортеж)
tuple() преобразует отсортированный список в кортеж:
отсортированный_кортеж = tuple(sorted(кортеж))
Длина кортежа
len() возвращает количество элементов в кортеже:
print(len(кортеж))
Методы кортежей
Кортежи имеют методы index() и count().
Конкатенация и повторение
Операторы + (конкатенация) и * (повторение) работают с кортежами:
x = (1, 2)
y = ("a", "b")
z = x + y
print(z) # (1, 2, 'a', 'b')
w = y * 3
print(w) # ('a', 'b', 'a', 'b', 'a', 'b')
Преимущества кортежей
Преимущества кортежей перед списками:
- Неизменяемость: Гарантирует целостность данных.
- Скорость: Операции с кортежами быстрее, чем со списками.
- Безопасность: Повышает читаемость и безопасность кода.
- Использование в других структурах данных: Например, ключи словаря.
Кортежи — мощный инструмент в Python для ситуаций, требующих неизменяемости данных и высокой производительности. Выбор между кортежем и списком зависит от задачи.