为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

尚方宝剑之说 2021-11-16 16:57:50
我不知道如何解决这个错误有代码:     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])
查看完整描述

3 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

您在 enumerate(oldsize[1:]) 中为 i, j 输入以下格式的 for 循环:

其中 i 是索引,j 是该索引处的值,此代码将从第二个值中获取结果,留下第一个值,因为我们将其定义为从 oldsize 列表中的索引 1 获取值


查看完整回答
反对 回复 2021-11-16
?
千巷猫影

TA贡献1829条经验 获得超7个赞

只需在索引之前添加一个大小检查i+1,以防万一i是在 的最后一项oldsize,这意味着i+1将是“最后一项”,它不存在。


 for i in range(len(oldsize)):   

      if i + 1 < len(oldsize) and hitboxx[0] == oldsize[i+1]:

           print("Some TEXTeeeeeeeeeeeeeeeeeeeeeeeeeeee")

      print(i)

      print(oldsize[i])

或者,您可以缓存 oldsize 的第一个项目并将该项目与 for 循环中的项目进行比较,然后更新缓存的项目以推进 for 循环。此外,您可以使用enumerate该索引访问索引和项目。


lastItem = oldsize[0]

for i, item in enumerate(oldsize[1:]):    # iterate starting with the second element

    if hitboxx[0] == item:

        print("Some TEXTeeeeeeeeeeeeeeeeeeeeeeeeeeee")

    print(i)

    print(lastItem)

    lastItem = item


查看完整回答
反对 回复 2021-11-16
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

想象一下您的列表包含5元素。它的长度将为5,其索引04

for i in range(len(oldsize)):

这将检查i0到 的索引4。如果您要求 element i+1,最后一个i+1将是5,超出范围。

要对此进行补救,请不要进行比 更进一步的迭代i=3。你会想要这样做:

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


查看完整回答
反对 回复 2021-11-16
  • 3 回答
  • 0 关注
  • 739 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信