Python2-索引器:创建数组数组

Python2-索引器:创建数组数组,python,arrays,python-2.7,input,raw-input,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 <m

这是我剧本的一部分:

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
3
241356789
回溯(最近一次呼叫最后一次):
文件“[path]”,第11行,在
order.append([int(n)表示列表中的n(o[i]))
索引器:列表索引超出范围

但我就是不明白为什么。有人能帮我吗?(我是初学者)

Python有一个基于0的索引。 由于您实际上是从1而不是从零开始循环,因此第一个调用将超过现有列表(此时,该列表仅具有长度
0

只需将您的线路更改为

for i in range(0,k):

修复了我的问题。

索引
i
以1(范围(1,k))开始,但索引
o
以0开始。可以使用o[-1]访问最后一个元素。或者将范围(k)内i的for循环更改为
从范围(1,k)内i的
中删除“1”:

对于范围(k)中的i,行
对我来说效果很好:
你可以这样做,以便为范围(k-1)中的i少做一个循环
Smply put:
对于范围(0,k)中的i:
而不是范围(1,k)中的i:以便从第0个索引开始。

因此,
范围(1,k)
(在Python 2中)为您提供一个列表
[1,2,3,…,k-1]
。 当您通过输入中的内容附加列表
o
时,该元素在索引
0

>> o = []
>> o.append(42)
>> o[0]
42
但是,在循环中,您尝试获取索引
1
,但该索引不可用


请记住,列表中的第一个元素可以通过索引
0
获得,其中第二个元素具有索引
1
等。

不,我没有这样做。
I
从1(一)开始,您的第一个
append
向列表中添加一个元素,即索引0(零),但您正在尝试索引1。