为什么我的零列表会导致 IndexError?

Why does my list of zeroes result in IndexError?

我在 occurence[j] = 0 上遇到错误。我真的不明白我的代码中这个错误的起源,因为它的长度是 dna,因为我在代码的顶部附加了 len(dna) 零,然后我将一些值分配给同一个列表 occurence 在我的嵌套循环中,j 只能达到 len(dna) 的值。

for i in range(len(dna)):
    occurence.append(0)

print(f"{len(dna)}")
print(f"{len(occurence)}")

#Calculating consecutive sequences and creating a 2D array occurence...
for i in types:
    for j in range(len(dna)):
        if (dna[j:j+len(i)] != i):
            occurence[j] = 0
        else:

            space = len(i)

            while(dna.find(i, space+len(i)) != -1):
                index = dna.find(i, space+len(i))
                space = space + len(i)
                if (index == len(i)):
                    occurence[j] += 1

    for k in range(len(occurence)):
        maximum = 0
        if(occurence[k] > maximum):
            maximum = occurence[k]
    counts.append(maximum)
    maximum = 0
    occurence.clear()

types 的第一次迭代结束时,您调用 occurence.clear(),这将导致 occurence 成为一个空列表。然后,当您尝试在第二次迭代中访问 occurence[j] 时,会抛出一个 IndexError,因为列表是空的。

我认为你想在 for i in types 循环中初始化你的列表,例如:

for i in types:
    occurence = [0] * len(dna)
    for j in range(len(dna)):
        ...

这样您就不需要在列表中调用 clear 方法,因为它会在每次迭代时被重新定义为零列表。