索引错误:列表分配索引超出范围

时间:2016-01-22 18:24:17

标签: python

我写过这个函数:

timeoutID is the numerical ID of the timeout, which can be used later with window.clearTimeout()

其中getAll在类participantRepo中定义如下:

{{1}}

我的问题是我不明白我一直在犯的错误

3 个答案:

答案 0 :(得分:0)

如果列表中至少没有pos+1个元素,list[pos]会尝试将note分配给列表外的索引。您可以使用append()方法将项​​目添加到列表中。

答案 1 :(得分:0)

如果此代码

scores[pos] = note

导致此错误:

Index error: list assignment index out of range

您可能会这样解释:

  1. 列表分配索引是指'得分[pos] ='。 'pos'是指数; 'scores'是列表名称。 您将值'note'分配给该索引处的列表。
  2. 超出范围表示用于'pos'的数字不是当前指定的列表'得分'的有效索引。
  3. 一种调试方法:

    在列表赋值之前添加一个print语句,以显示'pos'的值。如果您知道列表索引的有效范围,这可以帮助您跟踪此错误发生的位置和原因。

答案 2 :(得分:0)

您的代码应按以下方式处理out of bound access

def replace(self, pos, note):
"""
Replace the score of the participant at the given position with a new  score
Input: pos, note - integer
Output: the old score was replaced
"""
    scores = self.repo.getAll()

    if pos < len(scores):
        scores[pos] = note
    else: throw IndexError
    return scores

`