python at while loop IndexError: list index out of range

python at while loop IndexError: list index out of range

def solution(progresses, speeds):
    answer = []
    while len(progresses) != 0:
        count = 0
        for i in range(len(progresses)):
            if progresses[i] < 100:
                progresses[i] += speeds[i]
        while (progresses[0] >= 100) and (len(progresses) != 0):
            print("pop: ", progresses.pop(0))
            speeds.pop(0)
            count += 1
        if count != 0:
            answer.append(count)

    return answer


solution([93, 30, 55], [1, 30, 5])

我的 python 终端显示这样的错误。

    while (progresses[0] >= 100) and (len(progresses) != 0):
IndexError: list index out of range

我不知道为什么会出现这个错误.....帮帮我

同意评论。如果需要,您可以执行 import copycopy_of_speeds = copy.deepcopy(speeds),这将创建一个未绑定列表的副本,您可以循环访问它。

你的代码也有代码中的错误,其中

while progresses[0] >= 100:
            progresses.pop(0)

可能 progresses 一直弹出到一个空列表,然后 progresses[0] 命中该索引错误!。所以如果你这样做

while len(progresses) > 0 && progresses[0] >= 100 而不是,这不会解决该问题。

正如其他评论中提到的,您应该避免修改在 whilefor 循环检查中使用的列表。


如果您想了解代码失败的原因。问题是这一行:

while (progresses[0] >= 100) and (len(progresses) != 0):

您正在访问元素零 (progresses[0]),但列表为空。如果你交换这两个检查,它工作正常(因为如果第一个检查已经 returns false 第二个检查根本不执行)。

while (len(progresses) != 0 and progresses[0] >= 100):