← Все вопросы

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

Задан 20 месяцев назад1.5к просмотров3 ответа
24

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

3 ответа

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.

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

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

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

9

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

Ваш ответ

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