2016-12-08 27 views
0

我希望與元素的它如何在Python 3中刪除數組中最大的元素及其右邊的元素?

這裏權一起拔出最大元素的數組中是我的代碼:

>>> curG = [34,89,11,99,36,92,67] 
>>> f = curG.index(max(curG)) 
>>> for i in range(f,len(curG)): 
     curG.remove(curG[i]) 

我想這樣做遞歸,直到沒有在沒有更多的元素數組,直到len(curG)== 0。

但是,這個程序發生的錯誤只是第一遍中刪除的最大元素,但它右側的元素繼續保留在數組中。 還計劃拋出這樣的錯誤:

IndexError: list index out of range 

應該怎樣做?

回答

1

不知道你爲什麼這樣做,但我不會判斷。你可以用while循環做更容易,提供了一個切片del,而不是名單上的不斷呼籲.remove

while len(curG): 
    del curG[curG.index(max(curG)):] 
    # print(curG) 

如果打印每個元素(取消對print調用)的結果是:

[34, 89, 11] 
[34] 
[] 
1

你的問題是你正在變異你正在循環的數組(所以當你通過for循環時列表的長度更短)。我認爲實現這一點的一種更簡單的方法是:

curG = curG[0:curG.index(max(curG))] 
相關問題