为什么我的零列表会导致 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
方法,因为它会在每次迭代时被重新定义为零列表。
我在 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
方法,因为它会在每次迭代时被重新定义为零列表。