这是我的一段脚本:
k = int(raw_input())
order = []
o = []
for i in range(1, k):
o.append(raw_input())
order.append([int(n) for n in list(o[i])])
在这些输入行之后,我一直遇到以下错误:
3
241356789
Traceback (most recent call last):
File "[path]", line 11, in <module>
order.append([int(n) for n in list(o[i])])
IndexError: list index out of range
但是我只是不知道为什么。有人可以帮我吗? (我是初学者)
答案 0 :(得分:0)
Python具有从0开始的索引。
由于您实际上是从1开始而不是从0开始循环,因此第一个调用将超出现有列表(此时的长度仅为0
)。
只需将行更改为
for i in range(0,k):
为我解决了这个问题。
答案 1 :(得分:0)
索引i
以1(range(1,k))开头,而索引o
以0开头。您可以使用o [-1]访问最后一个元素。或将for循环更改为for i in range(k)
答案 2 :(得分:0)
从for i in range(1, k):
中删除“ 1”
在行for i in range(k):
上对我来说效果很好,您可以这样做以减少循环for i in range(k-1):
答案 3 :(得分:0)
为使从第0个索引的起始位置开始,请以for i in range(0, k):
代替for i in range(1, k):
。
答案 4 :(得分:0)
因此,range(1, k)
(在Python 2中)为您提供了一个列表[1, 2, 3, ..., k-1]
。
当您通过输入内容将列表o
附加到列表后时,该元素在索引0
上可用
>> o = []
>> o.append(42)
>> o[0]
42
但是,在循环中,您尝试获取索引1
,该索引不可用。
请记住,列表中的第一个元素可通过索引0
获得,其中第二个元素具有索引1
等。