Позвольте мне начать серию постов «Вопросы для интервью с Python» с этого довольно распространенного вопроса. Кортежи и списки — это два, казалось бы, похожих типа последовательностей в Python. И я люблю этот вопрос, потому что глубина ответа — хороший показатель опыта кандидата.
Буквальный синтаксис. Мы используем круглые скобки (`(` и `)`) для создания кортежей и квадратных скобок (`[` и `]`) для получения нового списка. Также мы можем использовать вызов соответствующего типа для получения необходимой структуры — tuple
или list.
Изменчивость. Кортежи неизменяемы, а списки изменяемы. Этот пункт является базой для следующих.
Использование памяти. Из-за изменчивости вам нужно больше памяти для списков и меньше памяти для кортежей.
Расширение. Вы можете добавить новый элемент как в кортежи, так и в списки с той лишь разницей, что id кортежа будет изменен (т.е. у нас будет новый объект).
Хеширование. Кортежи можно хэшировать, а списки — нет. Это означает, что вы можете использовать кортеж в качестве ключа в словаре.
Семантика. Этот пункт больше касается передовой практики. Вы должны использовать кортежи как разнородные структуры данных, а списки — это однородные последовательности.
Ссылки: