Python для начинающих: Урок 13 — Кортежи

Кортеж в 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 для ситуаций, требующих неизменяемости данных и высокой производительности. Выбор между кортежем и списком зависит от задачи.

Что будем искать? Например,программа