Почему мой список нулей приводит к IndexError? - PullRequest
0 голосов
/ 28 марта 2020

Я получаю ошибку на occurence[j] = 0. Я не очень понимаю причины возникновения этой ошибки в своем коде, так как она имеет длину dna, потому что я добавляю в начало кода len(dna) нули, а затем присваиваю какое-то значение тому же списку occurence в моем вложенном коде. l oop, где 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()

1 Ответ

1 голос
/ 28 марта 2020

В конце первой итерации по types вы вызываете occurence.clear(), в результате чего occurence будет пустым списком. Затем, когда вы пытаетесь получить доступ к occurence[j] на второй итерации, выдается IndexError, поскольку список пуст.

Я думаю, что вместо этого вы хотите инициализировать свой список внутри for i in types l oop, например:

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

Тогда вам не нужно будет вызывать метод clear в вашем списке, поскольку он будет переопределен как список нулей на каждой итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...