Python子列表 - 列表索引超出范围

时间:2013-08-28 22:11:40

标签: python list while-loop range global

嗨社区, 我有一个我似乎无法解决的问题。 基本上我使用全局列表并希望在while循环中访问某些索引 这是我的设置:

PossibleJumps = [
[[1,2],1,[2,4]],
[[3,4],1,[2,3]],
[[2,5],1,[1,1]],
[[1,3],0,[1,5]],
[[4,5],0,[1,4]],
[[6,6],0,[1,2]]]

以及被调用以执行操作的函数:

def buildPJsphere(level, box):
I = 1
while len(PossibleJumps) * 4 > I:
    CurrentJumps = PossibleJumps[I-1]
    CurrentJumpRL = CurrentJumps[0]
    CurrentJumpHD = CurrentJumps[1]
    CurrentJumpFB = CurrentJumps[2]

             .......

    I += 1

如果我运行代码,我会得到消息“IndexError:list index out of range” 在第二行代码的第4行。

  

CurrentJumps = PossibleJumps [I-1]

感谢您的所有帮助 - 提前致谢, 马可

1 个答案:

答案 0 :(得分:3)

你的状况失败了。你基本上说继续i不到PossibleJumps长度的四倍。根据定义,它大于PossibleJumps的大小。因此,当I变得太大时,它会超出数组的范围。

顺便说一下,您使用的是PossibleJumps,您只需要担心外部尺寸,即将您的时间条件更改为

while I < len( PossibleJumps ):
    CurrentJumps = PossibleJumps[I-1]
    ...

这应该可以解决您的问题,并且仍然允许您访问所有子列表。

附注,使用print对于追踪错误非常有用。在这个,因为它不能正常工作,你可以尝试

print I
print PossibleJumps[ I ]

在失败的线上方。然后你可以看到索引变得太大了,print PossibleJumps[ I ]行会失败,显示你不能使用那么大的值来引用数组。