计算数组时出现“列表分配索引超出范围”错误

Posted

技术标签:

【中文标题】计算数组时出现“列表分配索引超出范围”错误【英文标题】:"list assignment index out of range" error when computing array 【发布时间】:2017-06-28 06:30:33 【问题描述】:

正如您在下面看到的,有一个数组数组可以保存图像的角点。我想用这个数组来计算每一边的长度。

这是我的代码:

imageDrawPoints = []
imageDrawPoints.append(imageShowConers)
imageSumPoints = [] 
i=0;
for imageDrawPoints in imageDrawPoints : 
    imageSumPoints[i] = imageDrawPoints[i] + imageDrawPoints[i+1]
    i=i+1
print imageSumPoints

错误:

IndexError Traceback(最近调用 最后)在() 4 i=0; 5 对于 imageDrawPoints 中的 imageDrawPoints : ----> 6 imageSumPoints[i] = imageDrawPoints[i] + imageDrawPoints[i+1] 7 我=我+1 8 打印图像SumPoints

IndexError: 列表赋值索引超出范围

【问题讨论】:

imageDrawPoints = [] imageDrawPoints.append(imageShowConers) 打印 imageDrawPoints [array([[[ 324.50048828, 325.00543213]], [[ 433.49432373, 325.00195312]], [[ 324.49883681, [324.49880931], [324.498810931] 216.50079346,216.98078918]],[[108.50048065,325.00384521]],[[2.63793683,325.0098877]],[[108.49881744,216.99128723]],[[216.49368286,325.01428223]],[[108.50048065,325.00540161]],[[324.50048828, 541.00384521]]], dtype=float32)] 欢迎来到Stack Overflow,你应该edit你的帖子包含你的数据而不是粘贴在评论中。 @하이둘기 每个角和角的长度?你的意思是两个角之间的距离?还是边长? @Mohammed Shareef C 我想知道两边的距离。 @senjuti 不要突出显示不是带有代码标记的代码的随机单词(例如“数组数组”)。 【参考方案1】:
"imageDrawPoints[i+1]" is the problem.

如果您有一个包含 5 个项目的列表,它可能看起来像 [0,1,2,3,4]

当您的迭代结束时,您的代码将寻找:

imageDrawPoints[4+1] 

它在你的数组中不存在并且会抛出错误。

因为我不知道你的代码需要做什么(你需要弄清楚),但你需要添加一些条件来寻找数组的结尾并做一些替代。

类似:

listExample = [0,1,2,3,4]

counter = 0
for i in listExample:

        if counter != len(listExample) -1:
        print i
        l = listExample[counter] + (listExample[counter+1])
        else:
            print "End Of Shape"

    counter+=1

【讨论】:

你好 Ed Baker。如果我必须解决这个问题,我需要改变什么? 我添加了一个代码示例,如果您满意,请将问题标记为已回答

以上是关于计算数组时出现“列表分配索引超出范围”错误的主要内容,如果未能解决你的问题,请参考以下文章

删除索引满足条件的每个元素;列表分配索引超出范围

Swift:填充二维数组时出现索引超出范围错误

从字符数组更改为字符串时出现“字符串下标超出范围”错误?

遇到和错误:尝试使用带有 LibSVM 的预计算内核时出现“错误的输入格式:sample_serial_number 超出范围”

滚动时将新项目添加到列表时出现数组索引超出范围异常

从数组中删除重复项时出现超出范围异常