Вопрос проверяет знание базовых структур данных Python и умение сохранять порядок элементов при дедупликации.
Самый простой способ — проходить список и запоминать уже встреченные элементы. Для этого используют вспомогательное множество. Элемент добавляется в результат только если он ещё не встречался. Такой подход сохраняет порядок исходного списка. Он работает за линейное время.
Удаление дубликатов с сохранением порядка — частая практическая задача, где важно понимать свойства list и set.
Перед перечислением важно зафиксировать: порядок сохраняется только при последовательной обработке элементов.
Идём по списку слева направо
Проверяем, встречался ли элемент ранее
Если нет — добавляем в результат
result = []
seen = set()
for x in items:
if x not in seen:
seen.add(x)
result.append(x)
result = list(dict.fromkeys(items))
Работает за счёт сохранения порядка ключей в dict.
Элементы должны быть хешируемыми
Для кастомных объектов требуется корректный __hash__
Удаление дубликатов с сохранением порядка достигается линейным проходом и дополнительной структурой данных. Это простой и эффективный приём для большинства задач.