Ловушки новичков при решении: удаление дубликатов из списка
Разберём решение и подводные камни — их обычно не видно в готовом коде из учебника.
Задача
Убрать из списка повторы, сохранив порядок первого появления элементов.
Решение
def unique(arr: list) -> list:
seen = set()
result = []
for x in arr:
if x not in seen:
seen.add(x)
result.append(x)
return result
print(unique([1, 2, 2, 3, 1, 4]))
Как это работает
Множество seen отвечает за быструю проверку «встречался ли элемент», список result сохраняет порядок. Простое приведение к set() порядок бы не сохранило.
Пример работы
[1, 2, 3, 4]
Сложность
O(n) по времени и памяти.
Частые ошибки
- Не обрабатывать крайние случаи. Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается.
- Смешивать типы данных. Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов.
- Писать код без проверки на маленьких примерах. Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.
Если решение заработало с первого раза — всё равно сверьтесь со списком ошибок: половина багов рождается при доработках.
Related:
- too twisted taboo nude
- Рассматриваем задачу: проверка палиндрома
- Решаем и тестируем: бинарный поиск
- big ass redhead babe gets anal destroyed
- kinger x caine
- miaa-842
- New Mallu Porn Videos – Hot Malayalam Sex & XXX Clips
- ksenyahot
- lololoshka
- kalogera sisters naked
- Шаг за шагом: проверка палиндрома
- eva ionesco playboy 1976
- Проверяем решение тестами: сортировка слиянием
- Частые ошибки при решении: сортировка пузырьком
- Типичные ошибки при решении: наибольший общий делитель
- Решаем и тестируем: проверка анаграмм
- POV evening sex with pregnant wife
- lilu & julia oil massage
- mangas omegaverse
- belinda play bj
- Maria Alive - Feedee Weight Gain, Stuffing, Vore & Giantess Photos