Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 28, 2016 08:33:10

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите с логикой программы

Добрый день, недавно изучаю питон и для практики решаю различные задачи из учебников и различных ресурсов.

Задача такова: вывести все значения которые повторяются в строке (те из списка

[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)

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

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


Буду признателен за ответы

Отредактировано sl0w (Апрель 28, 2016 08:35:39)

Офлайн

#2 Апрель 28, 2016 08:40:37

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Помогите с логикой программы

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

Офлайн

#3 Апрель 28, 2016 09:10:14

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите с логикой программы

спасибо) знал что что то не так с удалением но не понимал что именно

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

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version