IndexError:元组索引超出范围.调用类函数内部的列表类变量



我得到

IndexError:元组索引超出范围

在我的脚本上,其中包含以下内容:

def bump_detector(self, array):
for i in range(len(array)):
if (array[i+1]-array[i])>0.3:   
DoorDetector.__bumps.append(i+1)
if (array[i]-array[i+1]>0.3):
DoorDetector.__bumps.append(i)

这个电话:

def cb(self, data):
self.bump_detector(data.ranges)

在某个班级。这一行弹出错误:

if (array[i+1]-array[i])>0.3:

data.ranges是一个列表:ranges[640]。当我把它作为参数传递时,我想我正在覆盖范围列表,但我不确定,也不知道如何修复

此处:

for i in range(len(array)):
if (array[i+1]-array[i]) > 0.3:   

i的最后值将是array中的最后一个索引,因此i+1确实超出范围。这里的问题相同FWIW:

if (array[i]-array[i+1] > 0.3):

您可以使用range(len(array) -1)来解决此问题,或者更好地使用zip():

for x, y in zip(array, array[1:]):
if y - x > 0.3:
# do something

当然,因为range(X)返回0 .. X-1。所以在上一次迭代的循环for i in range(len(array))中,i等于数组中的最大索引。

尝试访问array[i+1]会导致异常。

在上一次迭代中,i=639和array[640]不存在,因此出现IndexError。

def bump_detector(self, array):
for i in range(len(array) - 1):  # Add a "-1" here
if (array[i+1]-array[i])>0.3:   
DoorDetector.__bumps.append(i+1)
if (array[i]-array[i+1]>0.3):
DoorDetector.__bumps.append(i)

只需使用修改循环语句

for i in range(len(array) - 1):

它将只在0到n-1之间进行迭代。由于最后一个元素将不进行比较。

相关内容

  • 没有找到相关文章

最新更新