Я пытаюсь вручную создать функцию, которая удаляет дубликаты из списка. Я знаю, что есть функция Python, которая делает что-то подобное (set()
), но я хочу создать свою собственную. Это то, что у меня есть:Создание функции, которая удаляет дубликаты в списке
def remove(lst):
for i in range(len(lst)):
aux = lst[0:i] + lst[i+1:len(lst)]
if lst[i] in aux:
del(lst[i])
return lst
Я пытался что-то вроде создания суб-список со всеми элементами, кроме того, который на данный момент находится на, а затем проверить, если элемент все еще находится в списке. Если это так, удалите его.
Проблема заключается в том, что она дает мне индекс за пределами допустимой погрешности. Ли линия for i in range(len(lst)):
не обновляется каждый раз, когда она начинается? Поскольку я удаляю элементы из списка, список будет короче, поэтому для списка, который содержит 10 элементов и 2 дубликата, он будет расти до индекса 9 вместо остановки 7-го.
Есть ли все равно, чтобы исправить это, или я просто попытаюсь сделать это, это другой способ?
Вы можете хранить все индексы элементов, которые необходимо удалить, а затем обрабатывать все после цикла. – JETM
* Должен ли я просто попробовать сделать это другим способом? * <--- да, что – wim
Как? Я попытался это сделать, но как только я делаю del (lst [d]) d - список со всеми дублирующими индексами, он дает мне ошибку из диапазона, поскольку все остальные значения d теперь выключены. – Myntekt