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

Буквальный синтаксис. Мы используем круглые скобки (`(` и `)`) для создания кортежей и квадратных скобок (`[` и `]`) для получения нового списка. Также мы можем использовать вызов соответствующего типа для получения необходимой структуры — tuple или list.

Изменчивость. Кортежи неизменяемы, а списки изменяемы. Этот пункт является базой для следующих.

Использование памяти. Из-за изменчивости вам нужно больше памяти для списков и меньше памяти для кортежей.

Расширение. Вы можете добавить новый элемент как в кортежи, так и в списки с той лишь разницей, что id кортежа будет изменен (т.е. у нас будет новый объект).

Хеширование. Кортежи можно хэшировать, а списки — нет. Это означает, что вы можете использовать кортеж в качестве ключа в словаре.

Семантика. Этот пункт больше касается передовой практики. Вы должны использовать кортежи как разнородные структуры данных, а списки — это однородные последовательности.

Ссылки: