Всем привет!
Я только начинаю изучать Python и стал разбирать списки. Вроде все было понятно, до одного момента.
Есть задача:
Сделать программу, которая бы удаляла из списка дублированные цифры.
Решение:
Начал решать задачу циклом For, код:
numbers = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5] #список с нарочными дублями
item_2 = 0
for item in numbers:
if item_2 == item:
print(item) #это я так дебажу
numbers.remove(item)
else:
item_2 = item
print(numbers)
На выходе получаю : [1, 2,
2, 3, 4,
4, 5]
2 и 4 не вырезалась, хотя само if условие успешно отрабатывает (Если я уберу numbers.remove(item) и поставлю просто какой-нибудь print(), то у меня будет ровно столько же print() сколько и дублей, то есть корректно находит все)
Однако, если я меняю код и делают так:
numbers = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
# удалил отсюда item_2 = 0
for item in numbers:
item_2 = numbers[item] #добавил эту строку
if item_2 == item:
print(item)
numbers.remove(item)
else:
item_2 = item #item_2 = 2
print(numbers)
То все отлично отрабатывает. Мой мозг просто взрывается уже, почему первый способ не отработал? Как я понял numbers.remove(item) не отрабатывает. Хоть и решил задачу уже, суть так и не понял.
Объясните пожалуйста, буду очень признателен!)
Всем спасибо!