列表索引超出范围:我不知道如何解决

我不知道如何解决这个错误


有代码:


     for i in range(len(oldsize)):   

          if hitboxx[0] == oldsize[i+1]:       #list index out of range

               print("Some TEXTeeeeeeeeeeeeeeeeeeeeeeeeeeee")

          print(i)

          print(oldsize[i])


尚方宝剑之说
浏览 740回答 3
3回答

慕斯王

您在 enumerate(oldsize[1:]) 中为 i, j 输入以下格式的 for 循环:其中 i 是索引,j 是该索引处的值,此代码将从第二个值中获取结果,留下第一个值,因为我们将其定义为从 oldsize 列表中的索引 1 获取值

千巷猫影

只需在索引之前添加一个大小检查i+1,以防万一i是在 的最后一项oldsize,这意味着i+1将是“最后一项”,它不存在。&nbsp;for i in range(len(oldsize)):&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; if i + 1 < len(oldsize) and hitboxx[0] == oldsize[i+1]:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;print("Some TEXTeeeeeeeeeeeeeeeeeeeeeeeeeeee")&nbsp; &nbsp; &nbsp; print(i)&nbsp; &nbsp; &nbsp; print(oldsize[i])或者,您可以缓存 oldsize 的第一个项目并将该项目与 for 循环中的项目进行比较,然后更新缓存的项目以推进 for 循环。此外,您可以使用enumerate该索引访问索引和项目。lastItem = oldsize[0]for i, item in enumerate(oldsize[1:]):&nbsp; &nbsp; # iterate starting with the second element&nbsp; &nbsp; if hitboxx[0] == item:&nbsp; &nbsp; &nbsp; &nbsp; print("Some TEXTeeeeeeeeeeeeeeeeeeeeeeeeeeee")&nbsp; &nbsp; print(i)&nbsp; &nbsp; print(lastItem)&nbsp; &nbsp; lastItem = item

慕丝7291255

想象一下您的列表包含5元素。它的长度将为5,其索引0为4。for&nbsp;i&nbsp;in&nbsp;range(len(oldsize)):这将检查i从0到 的索引4。如果您要求 element&nbsp;i+1,最后一个i+1将是5,超出范围。要对此进行补救,请不要进行比 更进一步的迭代i=3。你会想要这样做:for&nbsp;i&nbsp;in&nbsp;range(len(oldsize)&nbsp;-&nbsp;1):
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python