В чём разница между list и tuple?

list (список) — изменяемая упорядоченная коллекция, элементы можно добавлять, удалять и изменять по индексу. tuple (кортеж) — упорядоченная, но неизменяемая последовательность: после создания его содержимое менять нельзя. Обычно список используют для данных, которые будут меняться, а кортеж — для фиксированных наборов значений.

Главное различие: изменяемость. И list, и tuple — это последовательности: они хранят элементы по порядку, поддерживают индексацию, срезы и перебор в цикле. Но принципиальное отличие одно:

Список (list) изменяемый (mutable).

  1. Можно менять существующие элементы, добавлять новые, удалять старые (методы append, extend, insert, remove, pop);

  2. Присвоение по индексу items[0] = ...;

  3. Изменение части списка срезом items[1:3] = [...].

Кортеж (tuple) неизменяемый (immutable).

  1. После создания кортеж нельзя изменить;

  2. нельзя присвоить t[0] = ...;

  3. нельзя удалить элемент del t[0];

    Любые «изменения» на самом деле создают новый кортеж. Именно этот аспект — изменяемость — чаще всего ожидают услышать первым в ответе на собеседовании.

    Есть и другие отличия, которые стоит упомянуть. Когда рекрутер уточняет: «А кроме изменяемости что-то ещё?», полезно назвать ещё несколько моментов.

Сценарии использования

list логично использовать для коллекций, которые меняются, фильтруются, сортируются — например, список пользователей, задачи в очереди, результаты выборки из базы. tuple хорошо подходит для фиксированных структур: координата (x, y), дата (год, месяц, день), результат функции, возвращающей сразу несколько значений.

Методы и операции

У списков больше методов для изменения содержимого (append, sort, reverse и т.п.). У кортежей набор методов минимален, так как их изменять нельзя.

Производительность и память

Кортежи, как правило, занимают немного меньше памяти и могут итерироваться чуть быстрее за счёт своей неизменяемости. На уровне собеседования достаточно упомянуть, что tuple — более «лёгкая» структура для постоянных данных, а list — более гибкая, но эта гибкость дается немного большей ценой в виде затрат памяти и скорости работы.

Сильный ответ может звучать так:

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

Именно вокруг таких формулировок мы строим тренажёры и занятия на курсах TeoBrain: ты сначала отрабатываешь краткий «интервью‑ответ», а затем на практических задачах видишь, где в реальном backend‑коде разумно выбирать list, а где — tuple.

Назад к списку