← Все вопросы

Чем кортеж отличается от списка и зачем он вообще нужен?

Задан 22 месяца назад1.6к просмотров4 ответа
24

Список и кортеж выглядят почти одинаково. В чём смысл иметь отдельный тип tuple, если есть list?

4 ответа

38

Главное отличие: список изменяемый, кортеж — нет. После создания кортежа ты не можешь добавить/удалить/заменить элемент.

lst = [1, 2, 3]
lst[0] = 99      # ок

tup = (1, 2, 3)
tup[0] = 99      # TypeError

Зачем нужен кортеж:

  1. Неизменяемость как защита — данные, которые не должны меняться (координаты, RGB-цвет, запись из БД).
  2. Кортеж можно сделать ключом словаря или элементом set (список нельзя — он не хешируется).
  3. Чуть быстрее и легче по памяти.
  4. Функции, возвращающие несколько значений, на самом деле возвращают кортеж: return x, y.

Правило большого пальца: однородная коллекция, которую будешь менять → список; фиксированный набор разнородных полей → кортеж.

Роман Морковка про ключ словаря — прям инсайт, спасибо 👍 · 21 месяц назад
12

Если совсем коротко: кортеж = «список только для чтения». Используй, когда хочешь гарантировать, что данные не поменяются.

9

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

0

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

Ваш ответ

Войдите, чтобы ответить на вопрос.