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

时间:2019-02-22 16:56:48

标签: python python-3.x

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

有代码:

     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 个答案:

答案 0 :(得分:1)

您可以使用以下格式输入循环     对于i,j枚举(oldsize [1:]):

其中i是索引,而j是该索引处的值,该代码将从第二个值中获取结果,而第一个值则保留,因为我们定义它从旧大小列表中的索引1中获取值

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

for i in range(len(oldsize)):

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

要对此进行补救,请不要重复i=3以上的操作。您将想要这样做:

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