列表分配索引超出范围错误 - 已分配的值

时间:2015-10-03 18:19:20

标签: python list python-3.x range

我遇到了一个我不太了解涉及列表和索引的问题。代码如下:

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个索引第一行代码没有为该索引赋值?有人可以帮忙/解释一下吗?

1 个答案:

答案 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,这是超出范围的