在每次迭代中迭代一个可变的迭代器

时间:2019-03-06 17:49:34

标签: python loops for-loop indexing

我正在尝试实施以下代码,但出现错误 “索引超出范围”。我想我得到了错误,因为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

1 个答案:

答案 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