填充列表Python时出现IndexOutOfRange错误

时间:2018-12-10 12:44:10

标签: python python-3.x list loops

假设Seq1 =“ ACACT” Seq2 =“ AAT” 为什么此代码输出indexOutOfRange

FIRST_ONE ['PLATFORM_CD', 'SYSTEM_NAME', 'DB_NAME', 'TABLE_NAME', 'COLUMN_NAME']
SECOND_ONE ['Hq_Id']
THIRD_ONE ['DB_NAME', 'BU_NAME']
FOURTH_ONE ['DB_NAME', 'TABLE_NAME', 'COLUMN_NAME', 'PII_CD']
FIFT_ONE ['DB_NAME', 'PRIMARY_SYSTEM_NAME']

2 个答案:

答案 0 :(得分:2)

由于外部列表的理解将确定行数,该行数等于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]的分配顺序。

答案 1 :(得分:0)

这仅仅是因为第二个单词的字母比第一个单词多。

也许您应该这样做:

# before: self.M  = [[0 for x in range(s1)] for y in range(s2)] 
self.M  = [[0 for x in range(s2)] for y in range(s1)]

或者您应该在循环之前检查单词的长度。