python - 填充列表 Python 时出现 IndexOutOfRange 错误
问题描述
假设 Seq1 = "ACACT" Seq2 = "AAT" 为什么这段代码输出 indexOutOfRange
s1 = len(self.Seq1)
s2 = len(self.Seq2)
self.M = [[0 for x in range(s1)] for y in range(s2)]
self.Ix = [[0 for x in range(s1)] for y in range(s2)]
self.Iy = [[0 for x in range(s1)] for y in range(s2)]
for i in range(s1):
for j in range(s2):
if i == 0 and j != 0:
self.M[i][j]= - math.inf #Error in this line
if i != 0 and j == 0:
self.M[i][j]= - math.inf
解决方案
因为外部列表理解决定了行数,它等于len(s2)
:
M = [[0 for x in range(s1)] for y in range(s2)]
然而,当您分配时,您使用range(s1)
行索引:
for i in range(s1):
for j in range(s2):
if ....:
M[i][j] = ...
所以要么颠倒你的构造顺序M
,要么颠倒赋值顺序M[j][i]
。
推荐阅读
- ios - 重新加载数据后不调用 UICollectionViewCell draw() 方法
- excel - Excel VBA 编写内联 VBScript - 运行时错误“429”:ActiveX 组件无法创建对象
- docker - 自动重新部署 Docker 容器?
- javascript - 如何在先前成功时调用新的javascript函数(表单验证)
- sql - 需要在 TEXT (BASH) 中替换逗号
- windows - 让 GTest 与 Visual Studio 测试资源管理器一起工作
- printf - c++/sprintf:无法识别的字符转义序列
- javascript - 无法创建 FileList 类型的对象(鸭子类型)
- arrays - 使用 JMESPath 过滤一个简单的数组
- php - Twitter API:Wordpress 插件的 Oauth URL?