2016-10-25 246 views
0

我是新來的python,這可能是一個簡單的一行或一個字符的答案,但我似乎無法包裹我的頭。我有一個我想要遍歷的列表,並檢查當前索引後的索引中的元素是否相同,如果是,則將其刪除。Python:索引超出範圍

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

我知道了問題的根源: 「如果名單[I] ==列表[I + 1]:」 當我結束列表的 「列表第[i + 1]」 將出指數的範圍。問題是我不知道如何停止代碼,當它達到那個點,它超出範圍

+4

不要列出你正在迭代的list,這是python的一個內置函數 – RoadRunner

+1

使第一行成爲while(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

Python中沒有分號。 – Nurjan

+0

我剛剛複製了OP代碼並修復了第一行。修正了答案,沒有注意到。 – table

+0

@Nurzhan - 是的。它們在邏輯線的末尾並不是必需的。 – TigerhawkT3