Top.Mail.Ru

Кортежи

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

Если данные всегда должны оставаться одинаковыми, например, координаты точки или дни недели, то удобно использовать кортеж.
Создание кортежа очень похоже на создание списка, только вместо квадратных скобок используются круглые:
# Простой кортеж из чисел
numbers = (1, 2, 3)

# Кортеж из разных типов
info = ("Вася", 18, True)

# Кортеж из одного элемента (обязательно с запятой!)
single = (42,) # Обратите внимание на запятую
Если не указать запятую при создании кортежа из одного элемента, Python не создаст кортеж:
not_tuple = (42) # это просто число 42, а не кортеж!
tuple_one = (42,) # вот это кортеж из одного элемента
Зачем нужны кортежи?

  • Хранить данные, которые не должны изменяться (надежное хранилище).
  • Они быстрее работают, чем списки в некоторых случаях.
  • Подходят для упаковки нескольких значений (например, функция может возвращать сразу несколько результатов как кортеж).
  • Могут быть полезными внутри типов данных, которые мы изучим далее.

Индексация в кортеже работает точно так же, как в списке:
person = ("Аня", 20, "студентка")
print(person[0]) # Аня
print(person[2]) # студентка
print(person[-1]) # студентка (последний элемент)
Срезы тоже работают аналогично спискам:
data = (1, 2, 3, 4, 5)
print(data[1:4]) # (2, 3, 4)
Кортежи также поддерживают перебор в цикле
week_days = ("Пн", "Вт", "Ср")
for day in week_days:
print(day)
Еще с кортежами можно выполнять различные операции по аналогии со списками

  • Сложение: можно сложить два кортежа — получится новый кортеж
a = (1, 2)
b = (3, 4)
c = a + b
print(c) # (1, 2, 3, 4)
  • Умножение: повторить кортеж n раз
d = (9, 0)
e = d * 3
print(e) # (9, 0, 9, 0, 9, 0)
Изменить элементы кортежа нельзя
animals = ("кот", "собака")
# animals[0] = "рыба" # Ошибка! Нельзя изменять кортеж!
Если вы не хотите случайно изменить данные, кортеж — ваш выбор. Так ваши данные не «сломаются» в процессе работы программы.

Иногда полезно превратить список в кортеж и наоборот:
nums = [1, 2, 3]
nums_tuple = tuple(nums) # превращаем список в кортеж
print(nums_tuple) # (1, 2, 3)

letters = ("a", "b")
letters_list = list(letters) # превращаем кортеж в список
letters_list.append("c")
print(letters_list) # ['a', 'b', 'c']
Когда лучше использовать кортежи?

  • Если значения не должны изменяться.
  • Для возврата сразу нескольких результатов из функции.
  • Для хранения «наборов параметров» (например, (имя, возраст), (x, y, z) и т. д.)

Множества