Найти - Пользователи
Полная версия: Помогите с логикой программы
Начало » Центр помощи » Помогите с логикой программы
1
sl0w
Добрый день, недавно изучаю питон и для практики решаю различные задачи из учебников и различных ресурсов.

Задача такова: вывести все значения которые повторяются в строке (те из списка
[2, 2 , 1, 3, 5]
останется
[2,2]

data = [int(i) for i in input().split()]
t = 0
for y in data:
        if data.count(y) == 1:
            print(data[t])
            del data[t]
        else:
            t +=1
            continue
print(data)

решаю так вот.

Вроде логика не нарушена, но в то же время при воде 1 2 3 4 5 скажем половина цифр остается

При прогонке по действиям на http://pythontutor.com/visualize.html#mode=display

стало понятно что y увеличивается каждый раз на 2 ( а не на 1)

с чем это может быть связано?

или может у меня какая то другая ошибка?


Буду признателен за ответы
Firik
Вы удаляете элемент из того же спика, по которому итерируетесь. Предположим, вы нашли нужный элемент на позиции 2. Вы его удаляете, затем все следующие элементы смещаются влево на 1 и ваша программа берет 3 элемент уже из измененного списка. Короче, делайте копию списка и проходитесь по ней, либо удаляйте из нее
sl0w
спасибо) знал что что то не так с удалением но не понимал что именно

может кому поможет

data = [int(i) for i in input().split()]
t = 0
d = data[:]
for y in d:
        if d.count(y) == 1:
            del data[t]
        else:
            t +=1
            continue
print(data)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB