Вопрос интервью Python: кортеж против списка

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

Буквенный синтаксис. Самый очевидный способ получить требуемую структуру данных — вызвать соответствующий тип —tupleили же list. И вы также можете использовать синтаксический сахар для построения либо списка (используя квадратные скобки и запятые для объявления элементов), либо кортеж (используя запятые для объявления элементов и необязательно скобки для уменьшения двусмысленности).

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

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

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

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

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

Ссылки:

  1. «В чем разница между списками и кортежами?» вопрос по СО;
  2. Понимание кортежей и списков в Python.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *