Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 简单列表处理函数中的索引器-我缺少什么?_Python - Fatal编程技术网

Python 简单列表处理函数中的索引器-我缺少什么?

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

这是一段令人尴尬的代码,只需要第二双眼睛就能发现“明显的”错误。我正在处理一个列表列表,出于某种原因,我点击了一个“列表索引超出范围”的erorr——尽管我盯着屏幕看了一会儿,还是无法发现它

以下是片段:

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。