首页 > 解决方案 > 填充列表 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

标签: pythonpython-3.xlistloops

解决方案


因为外部列表理解决定了行数,它等于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]


推荐阅读