Удаление повторяющихся элементов в Python

Всем привет. Недавно начал изучение Python. И решил попробовать задачу с удалением из списка повторяющихся элементов. Решил несколькими способами, однако со способом, который привел ниже, вопрос возник. Подскажите, пожалуйста, почему все повторяющиеся элементы удалились, кроме числа 28, ведь метод count сам посчитал сколько раз конкретные числа встречаются в списке, а remove должен был удалить те, которые встречаются больше 1 раза?

list1 = [2,28, 3, 7, 3, 6,66, 2, 8, 8,88,23,7,28] 
for i in list1:
  if list1.count(i) > 1:
    list1.remove(i)
print(list1)

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

Автор решения: Ivan Dvurechenskiy

Если еще актуально.На первой итерации цикла элементом i-тым элементом является число 2. Так как оно имеет дубликат, то соответственно удаляется и на ЭТОЙ ЖЕ итерации i-тым элементом становится число 28. На следующей итерации цикла этот элемент пропускается и цикл смотрит на число 3

→ Ссылка
Автор решения: Костя Килиманов

Если смотреть через print() что делается на каждом шаге цикла, то видно, что цикл будет пропускать элементы, поскольку сам список изменяется во время выполнения.

list1 = [2,28, 3, 7, 3, 6,66, 2, 8, 8,88,23,7,28]
for i in list1:
  print(i)
  if list1.count(i) > 1:
    list1.remove(i)
    print(list1)

Лучше создавать новый список из неповторяющихся элементов

list1 = [2,28, 3, 7, 3, 6,66, 2, 8, 8,88,23,7,28]
list_changed = []
for i in list1:
  list_changed.append(i)
  if list_changed.count(i) > 1:
    list_changed.pop()
print(list_changed)
→ Ссылка