我遇到了一个我不太了解涉及列表和索引的问题。代码如下:
listA = [-1 for i in range(1, 14)];
def functionA(num):
for i in range (1, 14):
listA[i] = num
functionA(1);
这给了我'IndexError:list assignment index out of range'消息。我在functionA(1)之前的空格中添加了一些print()语句以帮助调试,并发现循环正在listA [12]完成迭代,但是当它到达listA [13]时失败。
我最初将范围(a,b)语句设置为14结束,因为我理解第二个参数不包含,因此应该以13结尾。如果是,它甚至可以尝试写入第13个索引第一行代码没有为该索引赋值?有人可以帮忙/解释一下吗?
答案 0 :(得分:0)
Python索引是基数0,而不是基数1.当您创建列表时,使用range(1, 14)
循环,这意味着您只创建了13个元素,从索引0到12(您已经获得了与range(13)
完全相同的结构,因为未使用range
的值,它只是控制循环数。)
由于索引从0到12(包括0和12)运行,当你稍后从1分配给13时(因为你在range(1, 14)
上循环),0仍然未分配,并且你尝试分配索引13,这是超出范围的