← Все вопросы
Чем кортеж отличается от списка и зачем он вообще нужен?
24
Список и кортеж выглядят почти одинаково. В чём смысл иметь отдельный тип tuple, если есть list?
3 ответа
38
Главное отличие: список изменяемый, кортеж — нет. После создания кортежа ты не можешь добавить/удалить/заменить элемент.
lst = [1, 2, 3]
lst[0] = 99 # ок
tup = (1, 2, 3)
tup[0] = 99 # TypeError
Зачем нужен кортеж:
- Неизменяемость как защита — данные, которые не должны меняться (координаты, RGB-цвет, запись из БД).
- Кортеж можно сделать ключом словаря или элементом
set(список нельзя — он не хешируется). - Чуть быстрее и легче по памяти.
- Функции, возвращающие несколько значений, на самом деле возвращают кортеж:
return x, y.
Правило большого пальца: однородная коллекция, которую будешь менять → список; фиксированный набор разнородных полей → кортеж.
Роман Морковка про ключ словаря — прям инсайт, спасибо 👍 · 20 месяцев назад
12
Если совсем коротко: кортеж = «список только для чтения». Используй, когда хочешь гарантировать, что данные не поменяются.
9
Кортеж неизменяемый, поэтому его можно хешировать и класть в словарь как ключ — списком так не выйдет.
Ваш ответ
Войдите, чтобы ответить на вопрос.