Вопрос проверяет понимание внутреннего устройства структур данных Python и оптимизации памяти.
В Python кортежи и списки — это последовательности, но они устроены по-разному. Список — это динамический массив, который может изменять свой размер. Для этого он хранит не только сами элементы, но и дополнительную информацию: указатель на массив, количество элементов и зарезервированную память (capacity). Когда вы добавляете элемент, список может заранее выделить больше памяти, чтобы избежать частых перераспределений. Кортеж же неизменяем, поэтому его размер фиксирован. Он хранит только сами элементы и не требует резервного буфера.
import sys
t = (1, 2, 3)
l = [1, 2, 3]
print(sys.getsizeof(t)) # 72 (зависит от версии Python)
print(sys.getsizeof(l)) # 120 (больше из-за оверхеда)В этом примере кортеж занимает 72 байта, а список — 120. Разница обусловлена тем, что список хранит дополнительный массив для будущих добавлений.
Если вам нужна неизменяемая коллекция данных, используйте кортеж — это экономит память и повышает производительность. Например, для хранения констант, координат или возвращаемых значений из функций. Список лучше подходит, когда данные могут меняться.
Вывод: Кортежи эффективнее по памяти из-за отсутствия оверхеда на динамическое расширение. Выбирайте кортеж для фиксированных данных, а список — для изменяемых.