Программа курса:
Разбор задачи: Удаление дубликатов из отсортированного списка
Предложенный нами код решения:
def delete_duplicates(lst):
"""
Удаляет дубликаты из отсортированного списка lst и возвращает результат в виде нового списка.
:param lst: list, отсортированный список
:return: list, отсортированный список без дубликатов
"""
if not lst:
return []
# Инициализация списка результата
result = [lst[0]]
# Удаление дубликатов
for i in range(1, len(lst)):
if lst[i] != lst[i - 1]:
result.append(lst[i])
return result1. Входные параметры
Функция принимает на вход один параметр:
lst— отсортированный список, из которого нужно удалить дубликаты.
2. Проверка на пустой список
if not lst:
return []
- Если список пуст (
lst == []), то сразу возвращается пустой список. - Это базовый случай, который предотвращает ошибку доступа к элементам пустого списка.
3. Инициализация результата
result = [lst[0]]
- Предполагается, что список не пуст (это уже проверено выше).
- Первый элемент списка (
lst[0]) всегда добавляется в итоговый списокresult, так как он точно не дубликат (нет предыдущих элементов для сравнения).
4. Итерация по списку
for i in range(1, len(lst)):
if lst[i] != lst[i - 1]:
result.append(lst[i])
- Цикл: начинается со второго элемента (
i = 1) и проверяет каждый элемент списка до конца. - Проверка: текущий элемент
lst[i]сравнивается с предыдущимlst[i - 1].- Если элементы не равны, текущий элемент добавляется в список
result. - Если элементы равны, текущий элемент пропускается (он является дубликатом).
- Если элементы не равны, текущий элемент добавляется в список
- Итерация продолжается, пока не будут обработаны все элементы.
5. Возврат результата
return result
- После завершения цикла функция возвращает список
result, который содержит только уникальные элементы изlst.
Пример выполнения
Входные данные: lst = [1, 1, 2, 3, 3]
- Инициализация:
result = [1](первый элемент добавляется сразу). - Итерация по списку:
i = 1:lst[1] == 1, дубликат, пропускаем.i = 2:lst[2] == 2, не равенlst[1], добавляем2→result = [1, 2].i = 3:lst[3] == 3, не равенlst[2], добавляем3→result = [1, 2, 3].i = 4:lst[4] == 3, дубликат, пропускаем.
- Возврат:
result = [1, 2, 3].
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии