"列出索引超出范围" Python中的错误

时间:2011-10-13 14:54:15

标签: python pygame

我正在制作一个简单的Checkers。并且,为了跟踪检查员移动到的所有位置,我创建了一个列表来添加所有位置。

Locations = [(10, 10), (70, 10), (130, 10), (190, 20), (250, 10), (310, 10), \
         (370, 10), (430, 10), (10, 70), (130, 70), (190, 70), (250, 70), \
         (310, 70), (370, 70), (430, 70), (10, 130), (70, 130), (130, 130), \
         (190, 130), (250, 130), (310, 130), (370, 130), (430, 130), \
         (10, 190), (70, 190), (130, 190), (190, 190), (250, 190), (310, 190), \
         (370, 190), (430, 190)]

然而,当我尝试执行程序时,我总是得到: Ld8 =位置[31] - 列表索引超出范围

所以,我想也许一个列表只能包含一定数量的数字。因此,我创建了第二个位置列表并添加了行E-H,以便拆分列表。但是,我仍然收到索引超出范围的相同错误。 (Ld8是存储行D,第8列的位置的变量)

6 个答案:

答案 0 :(得分:6)

你有一个非常基本的理解问题:

>>> Locations = [(10, 10), (70, 10), (130, 10), (190, 20), (250, 10), (310, 10), (370, 10), (430, 10), (10, 70), (130, 70), (190, 70), (250, 70), (310, 70), (370, 70), (430, 70), (10, 130), (70, 130), (130, 130), (190, 130), (250, 130), (310, 130), (370, 130), (430, 130), (10, 190), (70, 190), (130, 190), (190, 190), (250, 190), (310, 190), (370, 190), (430, 190)]
>>> len(Locations)
31
>>> Locations[0] # first element
(10, 10)
>>> Locations[30] # last element
(430, 190)
>>> Locations[31] # doesn't exist!
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

位置中的元素从0到30,因为总共有31个元素。

答案 1 :(得分:3)

列表索引从0开始。因此,您的列表有31个项目,您可以使用索引0-30访问它们。位置[31]指的是不存在的第32个项目

答案 2 :(得分:2)

该列表中最大的索引是30,而不是31。列表中的索引(在大多数语言中)从零开始。因此(10,10)位于索引0,(430,190)位于索引30处。

如果你想在python的列表末尾索引,我建议你按Locations[-1]索引。

如果您尝试使用len,则需要减去1:Locations[len(Locations) - 1]

答案 3 :(得分:1)

Emm ......列表的元素从0开始编号,而不是从1开始。我已经计算了你的列表,我看到了从0到30的元素。

有时我甚至忘记它可以从1开始计数......

答案 4 :(得分:0)

位置[31]尝试访问列表中的第32个项目(不存在)

答案 5 :(得分:0)

大多数编程语言的数组索引从0开始,而不是1