Разница между списками и кортежами в Python
сравнение изменяемой и неизменяемой последовательностей. Полезно, когда порядок важен в обоих вариантах, но правила изменения различаются.
Читать материалВыбирайте структуру Python по необходимой операции: список хранит изменяемую последовательность с повторами, кортеж — последовательность без изменения её состава, множество — уникальные элементы, словарь — значения по ключам. Начинайте с требований к данным, а не с внешнего вида скобок. Одна задача может использовать несколько структур на разных этапах.
Выберите инструкцию под свою задачу. Ниже — подробный разбор выбора и проверки результата.
сравнение изменяемой и неизменяемой последовательностей. Полезно, когда порядок важен в обоих вариантах, но правила изменения различаются.
Читать материалуникальность, объединение и другие операции над наборами. Начинайте здесь, если задача связана с принадлежностью элемента или пересечением наборов.
Читать материалбазовая модель ключ–значение. В современных версиях Python словарь сохраняет порядок вставки; старую формулировку о неупорядоченности не следует принимать за текущее правило.
Читать материалотдельный разбор поведения объектов. Нужен для понимания, что происходит при передаче и изменении коллекций.
Читать материалДля каждого перехода между структурами выпишите, какая информация перестаёт храниться. Так упражнение превращается из запоминания методов в проверку модели данных. Если потерянные свойства нужны следующему шагу, сохраните исходный вариант или выберите другую структуру для этого этапа.
| Требование | Структура | Учебный пример |
|---|---|---|
| Сохранять порядок и повторения, менять состав | Список | Последовательность поступивших заявок |
| Хранить фиксированный набор позиций | Кортеж | Пара координат |
| Получить уникальные элементы | Множество | Набор встреченных категорий |
| Получать значение по именованному ключу | Словарь | Поля карточки товара |
Изменяемость и уникальность отвечают на разные вопросы. Кортеж не запрещает повторяющиеся значения; множество не хранит выбранный вами порядок последовательности. Словарь связывает ключи со значениями, но не становится от этого автоматически отсортированным по значению. Поэтому сначала выпишите свойства, которые действительно должны сохраняться.
Представьте список посещений: одна категория может встретиться несколько раз. Для подсчёта посещений повторы существенны, а для перечня категорий — нет. Преобразование в множество меняет смысл данных, а не только способ хранения. Сделайте такое преобразование только после решения, нужна ли информация о количестве повторов.
Возьмите пять тестовых записей, среди которых есть повторы. Опишите три действия: добавить ещё одну, найти нужную и подготовить вывод. Для каждой выбранной структуры посмотрите, можно ли выполнить действие без потери важных свойств. Если приходится постоянно восстанавливать утраченный порядок, возможно, множество выбрано слишком рано.
Для словаря сначала определите смысл ключа. Если два объекта могут иметь одинаковое имя, такое имя не всегда подходит для различения записей. В учебном примере используйте отдельный идентификатор и проверьте повторное присваивание по тому же ключу. Так станет заметно различие между новой записью и заменой значения существующей.
Неизменяемость кортежа касается его позиций, но не превращает вложенные изменяемые объекты в неизменяемые. Для первых упражнений используйте простые значения и не считайте кортеж универсальным способом защиты сложной структуры. Проверяйте именно то поведение, на которое опирается программа.
Удачный выбор легко объяснить одной фразой: «мне нужна эта операция и эти свойства». Если объяснение начинается только со знакомого синтаксиса, повторите упражнение на тех же данных с другой структурой и сравните потерянные либо сохранённые свойства.