首页 > 解决方案 > 我该如何解决这个问题?IndexError:列表索引超出范围

问题描述

当我运行我的代码时,我收到了这个 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

标签: pythonbranch-and-bound

解决方案


您收到此错误是因为

  • 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错误,并帮助您调试代码!


推荐阅读