Пишем решение с тестами: удаление дубликатов из списка
Разберём решение и сразу накроем его тестами — это хороший стиль работы с кодом.
Задача
Убрать из списка повторы, сохранив порядок первого появления элементов.
Решение
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) по времени и памяти.
Проверка тестами
Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.
assert is_valid(True) is not None # базовая проверка вызова
assert is_valid(False) is not None # и второй случай
Такой минимум уже защищает от случайной ошибки при правках кода.
Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.
Related:
- Решаем и тестируем: максимум и минимум списка
- starsessions-mila
- türk snap ifşa
- 朝ゴミ出しする近所の遊び好きノーブラ奥さん 百多えみり 1
- lilu & julia oil massage
- bokep indo miss clara cewek hyper ngentot full durasi
- جنس مترجم عربي
- Осваиваем задачу: быстрая сортировка
- Common mistakes in bracket sequence validation part fedd
- Schpicy Porn Comics Collection - Sexy Adult Cartoon Galleries
- 七海蒂娜作品
- Рассматриваем задачу: проверка палиндрома
- 埃及猫摇
- Проверяем решение тестами: решето Эратосфена
- wifeymadison
- starsessions lisa nude
- deemanni_of
- Пошаговый разбор: бинарный поиск
- Zahra OnlyFans HD Photos Ass Big Collection Free Now
- KakoPis.Ru - Какающие и писающие девушки, копро порно
- Частые ошибки при решении: проверка палиндрома
- lilynette gingerbuck hentai
- Пишем решение с тестами: сортировка пузырьком
- Рассматриваем задачу: бинарный поиск
- Разблокировка лука True Fire: эксклюзивная галерея фото
- livu ifşa - Türk ifşa videoları ve resimleri