Удалить все повторяющиеся элементы из списка. Python

list6 = [1, 1, 2, 2, 2, 3, 4, 4, 5]

for i in list6:
   if i == i:
       list6.remove(i.__index__())
       print(list6)

Почему у меня в конце удаляет 5?

Я тут заметила что строка if i == i: ничего не меняет в коде. Так как мне решать это?


Ответы (3 шт):

Автор решения: entithat
list(set([1, 1, 2, 2, 2, 3, 4, 4, 5]))

А у вашем случае надо написать как-то так: если в списке уже есть такой элемент, то идти к следующему и проверять снова.

duplicates = [1, 1, 2, 2, 2, 3, 4, 4, 5]
unique = duplicates[0:0]

for i in range(len(duplicates)):
    if duplicates[i] in unique: 
        continue
    unique.append(duplicates[i])

print(unique)

Либо, расписал более детально (но так делать ни в коем случае нельзя):

duplicates = [1, 1, 2, 2, 2, 3, 4, 4, 5, 0]
unique = []

# Проходимся по каждому элементу нашего списка
for i in range(len(duplicates)):
    # Заводим флаг, который обозначает, что такой элемент уже был
    contains = False

    # Теперь самая важная часть
    # Проходимся по тех всех элементах изначального списка начиная от того, на которым мы сейчас в главном цикле
    for j in range(i + 1, len(duplicates)):
        # Если текущий элемент главного цикла тот же, что и нашего вложенного, то понятно, что это повторение значения
        # Ставим флаг, что мы нашли совпадение
        if duplicates[i] == duplicates[j]: 
          contains = True

    # А тут проверяем, если совпадений не было, то это уникальный элемент и его можно добавить в выходной список
    if not contains:
      unique.append(duplicates[i])

print(unique)
→ Ссылка
Автор решения: Hellsensation

Если вам не нужно преобразовывать список в множество, а оставить его также списком, то можно завести счетчик символов и сделать так:

list6 = [1, 1, 2, 2, 2, 3, 4, 4, 5]
counter = 0
for i in list6:
    counter += 1
    if counter >= 1:
        list6.remove(i)
print(list6)

Вывод:

[1, 2, 3, 4]
→ Ссылка
Автор решения: Tehnorobot

Могу предложить простой вариант решения:

list6 = [1, 1, 2, 2, 2, 3, 4, 4, 5]
list_res = [] # создаем список, в котором
                    # будут храниться уникальные элементы
for i in list6:
    if i not in list_res: # проверка на наличие элемента в списке
       list_res.append(i) # добавляем новый элемент
print(list_res)

Вывод:

[1, 2, 3, 4, 5]
→ Ссылка