Что происходит при выполнении for i in line
, так это то, что каждая итерация i
получает значение от итератора, созданного для переменной line
. Таким образом, изменяя line
, вы не меняете итератор.
Итак, при удалении элемента в индексе, скажем, j
, все элементы в индексе i > j
перемещаются на один индекс вниз. Так что теперь ваш следующий элемент снова будет в индексе j
, но цикл все равно продолжится и перейдет к индексу j+1
.
Хороший способ убедиться, что ваша функция запускается со значениями, не являющимися дубликатами:
>>> l = [0, 1, 2, 3, 4, 5]
>>> print(non_unique_numbers(l))
[1, 3, 5]
Вы можете видеть, что были удалены только четные значения в соответствии с логикой, описанной выше.
То, что вы хотите сделать, - это работать над новым отдельным списком для суммирования ваших результатов. Для этого вы можете использовать простое понимание списка:
lin = input('go on then')
line = lin.split()
print([x for x in line if line.count(x) > 1])