我正在尝试实施以下代码,但出现错误 “索引超出范围”。我想我得到了错误,因为for循环保存了数组长度的值,而我在循环本身内部进行了更改。
我不知道如何使用for循环解决它。 我确实使用递归的方式解决了它,但是它在计算上很昂贵,而且我正在处理数十亿个单词。顺便说一句,如果两个单词具有相同的句子,则Comp函数仅返回池,因此我认为它不会起作用。
我正在使用Python-3,pycharm。
def reg(array,n):
f=open(r"C:\Users\Ali\Desktop\love.txt","w")
length= len(array)
if length==1:
return array
k=0
for item in range (length-1):
k+=1
for j in range(k,length):
if Comp(array[item][0],array[j][0])>=n:
f.write(str("\n"))
f.write(str(array[item][1]))
f.write(str("\n"))
f.write(str(array[j+k ][1]))
array[k+j]=array.pop()
length-=1
break
f.close()
pass
答案 0 :(得分:1)
无需修改数组,只需跟踪有效的最后一个索引并在命中它时就中断。像(未经测试)
k = 0
last_index = len(array) - 1
for item in range(length - 1):
if item > last_index:
break
k += 1
# ....
array[k+j] = array[last_index]
last_index -= 1
break