2016-10-25 5 views
0

Я новичок в python, и это может быть простой ответ одной строки или одного символа, но я не могу обернуть вокруг себя голову. У меня есть список, в котором я хочу выполнить итерацию, и проверить, совпадает ли элемент в индексе после текущего индекса и удалить его, если он есть.Python: Index Out Of Range

while i < len(list): 
    if list[i] == list[i+1]: 
     del list[i]; 
    i+=1; 

Я знаю, что проблема исходит от «если список [я] == список [я + 1]:» когда я добираюсь до конца списка «список [я + 1]» будет из диапазон индекса. Проблема в том, что я не знаю, как остановить код, когда он дойдет до той точки, где он выходит за пределы диапазона

+4

Не указывайте список, который вы итерируете через 'list', то есть встроенную функцию для python – RoadRunner

+1

Сделайте первую строку как показано на рисунке (i + 1) Koushik

+0

@John Arano Проверьте это: http://ideone.com/ocUjHu – RoadRunner

ответ

0

Во-первых, list - это встроенная функция python, поэтому вы никогда не должны использовать ее для имя ваших переменных.

И ваши проблемы сами. Исправление для вашей ошибки прост:

while i < (len(_list) - 1): 
    if _list[i] == _list[i+1]: 
     del _list[i] 
    i+=1; 

Причиной IndexError является то, что на последней итерации i уже последний индекс, и вы пытаетесь получить элемент в i+1 положении.

+0

В питоне нет точек с запятой. – Nurjan

+0

Я действительно просто скопировал код OP и исправил первую строку. Исправлено это в ответе, не заметили. – table

+0

@ Нуржан - Да, есть. Они просто не нужны в конце логической строки. – TigerhawkT3