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
等。
好吧,这是我的一段脚本:
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
等。