Python 简单列表处理函数中的索引器-我缺少什么?
这是一段令人尴尬的代码,只需要第二双眼睛就能发现“明显的”错误。我正在处理一个列表列表,出于某种原因,我点击了一个“列表索引超出范围”的erorr——尽管我盯着屏幕看了一会儿,还是无法发现它 以下是片段:Python 简单列表处理函数中的索引器-我缺少什么?,python,Python,这是一段令人尴尬的代码,只需要第二双眼睛就能发现“明显的”错误。我正在处理一个列表列表,出于某种原因,我点击了一个“列表索引超出范围”的erorr——尽管我盯着屏幕看了一会儿,还是无法发现它 以下是片段: def group_ldata(data, freq, normal_grouping = True): if freq > 1 and len(data) > (SOME_SANITY_FACTOR*freq): i, output, subset, la
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
>b=组数据(a,2)
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
[]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第11行,在组\u ldata中
索引器:列表索引超出范围
有人能找出错误的原因吗?我不知道你想做什么。但是,错误的原因是显而易见的 开始时,您需要执行
i=0
。
然后,稍后在while True
循环中执行i+=freq
。现在我等于频率
现在,当while True
循环再次运行(第二次迭代)时,在subset=data[i:freq]
行中,subset将等于长度为0的列表。您正试图访问其中的第一个元素。有道理吗?Bingo!。我知道这会是一件很愚蠢的事——真是有目共睹!。上限应为i+freq。