我正在制作一个简单的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列的位置的变量)
答案 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
。