2016-11-14 72 views
0

這是代碼如果環路 - 索引超出範圍

for i in np.arange(len(tupel)): 
    if tupel[i][0]+1 == tupel[i+1][0] and tupel[i][1] != 0: 
     pre.append((tupel[i][1])) 
    else: 
     means.append(pre) 
     pre = [] 

前和手段都只是兩個列表。我有另一個列表:「tupel」。它看起來像

[(0, 10), (1, 16), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8, 11), (9, 18), (10, 4), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0), (16, 0), (17, 0), (18, 12), (19, 16), (20, 1)] 

所有第2個元素爲零的圖形都應該被「!= 0」參數截斷。如您所見,非零值(第二個元素)存在於某些區間中。現在我想要做的是計算以下項目的第二個元素的總和的平均值。

例如,

(0,10),(1,16)具有非零的第二元素。我想要的意思是第一個元素和第二個元素的意思。將是:(1,26/2)。

(2,0),(3,0),(4,0),..應該被切斷。因爲第二個元素是零。 (8,11),(9,18),(10,4)應該是:(27/3,33/3)。

要檢查第二個元素是否爲非零的下列項目是「下一個整數」,我創建了循環(上面的代碼)。但我得到的錯誤:

IndexError: list index out of range 

我如何檢查列表中的下列項目不超過指數的範圍是多少?

在此先感謝。

+2

可能的問題是'[i + 1]' - 您使用'索引超出範圍'。你需要'np.arange(len(tupel)-1):' – furas

+0

非常感謝。它修復了它! – rfaenger

回答

1

問題是[i+1] - 您使用索引out of range。您需要np.arange(len(tupel)-1)

+0

問題出現了:現在循環「忘記」我的tupel列表的最後一個元素。 – rfaenger

+1

您必須手動添加最後一個元素 - 沒有特殊的規則來檢查最後一個元素。 – furas

+0

啊,好的。不知道。謝謝你,furas! – rfaenger