python - 我该如何解决这个问题?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
解决方案
您收到此错误是因为
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
错误,并帮助您调试代码!
推荐阅读
- android - JNI 调用未启动 Android 类
- database - Mongoose 返回子文档中按字段分组的值的平均值
- javascript - 递归搜索数组中的嵌套对象并更新其子对象
- c# - Xamarin Android 响应来电和去电
- mysql - 通过连接表和按每个表中的列排序来优化 MySQL 查询
- python-3.x - Pyre-check 安装问题
- unit-testing - 如何修复 Vuetify 单元测试中的“ReferenceError: requestAnimationFrame is not defined”
- coldfusion - 是否可以将函数作为参数传递给 ColdFusion 中的其他函数?如果是怎么办?
- c - C 中的 bsearch() 在新的 gcc 版本 7.4.0 中给出分段错误
- python-3.x - 子程序后变量不保存