Python2 - IndexError: creating an array of arrays

Python2 - IndexError: creating an array of arrays

好吧,这是我的一段脚本:

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

但我就是想不通为什么。有人可以帮我吗? (我是初学者)

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

只需将您的线路更改为

for i in range(0,k):

为我解决了问题。

索引i从1开始(range(1,k))但索引o从0开始。您可以使用o[-1]访问最后一个元素。或者将 for 循环更改为 for i in range(k)

删除 for i in range(1, k): 中的“1” 它对我来说很好用for i in range(k):行你可以这样做以减少一个循环for i in range(k-1):

简单地说:for i in range(0, k): 而不是 for i in range(1, k):,以便从第 0 个索引开始。

所以,range(1, k)(在 Python 2 中)给你一个列表 [1, 2, 3, ..., k-1]。 当您通过输入中的内容附加列表 o 时,该元素在索引 0

上可用
>> o = []
>> o.append(42)
>> o[0]
42

但是,在您的循环中,您尝试获取索引 1,但该索引不可用。

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