удалить дубликаты, не используя delete или fromkeys, список нарезки; python - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь удалить дубликаты в списке с итерацией и нарезкой (без .remove или fromkeys et c) и продолжаю иметь неправильный результат.

Например, теперь у меня есть список ['a', 'n', 'a', 'a', 'n'] и, выполнив следующий код, я продолжаю получать ['a', 'a', 'n']

for i in range(1, len(lst)-1):
  if lst[i] == lst[0]:
    lst = lst[1:]
return lst

Я думаю, что это причина: когда в списке три элемента, диапазон становится range(1, 2), который ничего не содержит. Но даже когда я изменяю его на

for i in range(len(lst)-1)

, который, по моему мнению, не имеет смысла и должен просто удалить все элементы, оставляя только последний ['n'], он все равно возвращает ['a', 'a', 'n']

Кто-нибудь знает объяснение этому? Почему это кажется застрявшим в этом шаге?

1 Ответ

3 голосов
/ 08 января 2020

Вы можете просто поместить новые элементы в новый list, как,

>>> x
['a', 'n', 'a', 'a', 'n']
>>> y = []
>>> 
>>> for e in x:
...   if e not in y:
...     y.append(e)
... 
>>> y
['a', 'n']

или просто,

>>> list(set(x))
['n', 'a']
...