list vs tuple в Python: разница для собеса

list и tuple — два базовых упорядоченных контейнера в Python. Главное различие — изменяемость: list можно править, tuple нет. На собесе это базовый вопрос, по которому проверяют, понимаете ли вы immutability, hashing и почему tuple можно класть в set/dict.

Если коротко. list изменяемый (mutable), tuple неизменяемый (immutable). Tuple можно класть в set и dict-key, list — нет.
Проверь себя · 1/3разбор после ответа
При обработке событий нужно хранить идентификаторы пользователей, которых вы уже видели, чтобы быстро проверять условие user_id in seen и не хранить дубликаты. Что лучше использовать для seen?

list vs tuple: таблица различий

Параметрlisttuple
ИзменяемостьMutableImmutable
Синтаксис[1, 2, 3](1, 2, 3)
ХешируетсяНетДа (если все элементы хешируемы)
В качестве dict-keyНельзяМожно
ПамятьБольше (выделение с запасом)Меньше
СозданиеМедленнееБыстрее

Когда использовать list

Когда использовать tuple

На примере

list — изменяем
pts = [(0, 0), (1, 1)]
pts.append((2, 2))   # ок
pts[0] = (5, 5)      # ок
tuple — фиксирован
pt = (3, 4)
# pt[0] = 5  # TypeError
seen = {pt}          # tuple → в set
d = {pt: 'origin'}    # tuple → ключ dict

Ловушка на собесе

Известная ловушка: a = ([],) — tuple из одного элемента-list. tuple неизменяем по ссылкам, но a[0].append(1) сработает. Immutability tuple не значит deep-immutability.
Тренировать Python в Telegram

Ещё сравнения по теме