Вопрос проверяет понимание внутреннего устройства кортежей и отличий от списков на уровне памяти и мутабельности.
Кортеж — это неизменяемая последовательность, которая хранит ссылки на объекты в фиксированном массиве. После создания размер кортежа изменить нельзя. Благодаря неизменяемости Python может оптимизировать работу с кортежами и использовать их как ключи словаря. Элементы кортежа могут быть изменяемыми, но сам контейнер — нет.
Кортеж представляет собой структуру, содержащую:
фиксированное количество ссылок на объекты
размер, который не меняется после создания
Фактически кортеж похож на список, но:
не поддерживает изменение длины
не поддерживает операции добавления и удаления
Пример:
t = (1, 2, 3)
В памяти хранится:
объект кортежа
массив ссылок на числа 1, 2, 3
Кортеж имеет некоторые преимущества:
Не требуется хранить дополнительную информацию для изменения размера
Нет операций изменения структуры
Возможны оптимизации интерпретатора
Неизменяемость относится к контейнеру, а не к объектам внутри:
t = ([1, 2], 3)
t[0].append(4) # допустимо
Список изменился, но кортеж остался тем же объектом.
Кортеж — это компактная неизменяемая последовательность, оптимизированная для хранения фиксированного набора ссылок. Его используют, когда структура данных не должна изменяться.