Python2-IndexError:创建数组数组

时间:2018-07-06 06:39:42

标签: python arrays python-2.7 input raw-input

这是我的一段脚本:

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

但是我只是不知道为什么。有人可以帮我吗? (我是初学者)

5 个答案:

答案 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等。