0
這是那些尷尬的代碼片段之一,只需要第二雙眼睛來發現「明顯」的錯誤。我正在處理一個列表清單,出於某種原因,我打了一個'列表索引超出範圍'erorr - 儘管在屏幕上觀看了一段時間,但我無法發現它。簡單列表處理函數中的IndexError - 我錯過了什麼?
下面是摘錄:
def group_ldata(data, freq, normal_grouping = True):
if freq > 1 and len(data) > (SOME_SANITY_FACTOR*freq):
i, output, subset, lastpos = (0, [],[], len(data)-freq)
if not normal_grouping:
for i in range(lastpos):
pass
else:
while True:
subset = data[i:freq]
#print subset
firstrow = subset[0]
lastrow = subset[-1]
output.append((firstrow[0], firstrow[1], lastrow[2]))
i += freq
if i >= lastpos:
break
return output
else:
return data
下面是一些樣本數據來引導:
>>> a =[]
>>> a.append(range(0,5))
>>> a.append(range(5,10))
>>> a.append(range(10,15))
>>> a.append(range(15,20))
>>> a.append(range(20,25))
>>> a.append(range(25,30))
>>> a.append(range(30,35))
這是當我運行它的結果:
>>> b = group_ldata(a,2)
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
[]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 11, in group_ldata
IndexError: list index out of range
任何人都可以找出什麼是造成錯誤?
賓果!我知道這將是一件愚蠢的事 - 很好的發現!上限應該是i + freq。 – 2012-02-12 14:29:13