我该如何解决? IndexError:列表索引超出范围

时间:2019-02-09 19:44:46

标签: python branch-and-bound

运行代码时,我收到此IndexError:

constraints[fr][to] = self.extra_constr[2]
IndexError: list index out of range

以下是我的代码示例:

def determine_constr(self, parent_constr):
    constraints = copy.deepcopy(parent_constr)
    if self.extra_constr == None:
        return constraints

    fr = self.extra_constr[0]
    to = self.extra_constr[1]
    constraints[fr][to] = self.extra_constr[2]
    constraints[to][fr] = self.extra_constr[2]

    for i in range(2):
        constraints = self.removeEdges(constraints)
        constraints = self.addEdges(constraints)

    return constraints

1 个答案:

答案 0 :(得分:3)

您会收到此错误,因为

  • fr超出了constraints的范围
  • to超出了constraints[fr]的范围
  • 2超出了self.extra_constr的范围

没有更多关于这些变量包含什么的详细信息,很难更准确地回答您的问题。

您可以通过在代码中使用断言来仔细检查其中哪一个引起了错误。例如:

assert fr in range(len(constraints))
assert to in range(len(constraints[fr]))
assert 2 in range(len(self.extra_constr))

如果索引超出范围,这些变量将抛出AssertionError,并帮助您调试代码!