Python列表索引超出范围,但不应超出范围

时间:2018-06-27 15:00:23

标签: python while-loop indexoutofrangeexception

startDate,stopDate,startTime,stopTime,startBehavior和stopBehavior都是具有相同长度的列表。我在第5行中获得了超出范围的列表索引(如果startDate [i]!= stopDate [j]),我不确定为什么。它曾经工作过,现在却没有。我正在尝试根据if / elif语句中的条件打印特定行为。

i = 0
while (i < len(startDate)):
    j = 0
    while (j < len(stopDate)):
        if startDate[i] != stopDate[j]:
            j += 1
        elif startDate[i] == stopDate[j]:
            if stopTime[j] < startTime[i]:
                j += 1
            elif stopTime[j] > startTime[i]:
                if startBehavior[i] != stopBehavior[j]:
                    j += 1
                elif startBehavior[i] == stopBehavior[j]:
                    print(startBehavior[i])
                    print(stopBehavior[j])
                    print('')
                    i += 1

任何帮助将不胜感激!谢谢你!

1 个答案:

答案 0 :(得分:0)

如果运行以下代码段,即使我明显大于100,它也将永远运行。

i = 0
while i < 100:
    while True:
        i += 1
        print(i)

您的代码正在执行类似的操作-在i == len(startDate) - 1的情况下; startDate[i] == stopDate[j]; stopTime[j] > startTime[i];和startBehavior[i] == stopBehavior[j],您的代码将使i递增,从而i == len(startDate),然后,由于j < len(stopDate)仍为True,因此您将不会退出 second while循环。尝试访问startDate[i]时,您会得到一个IndexError

这在某种程度上取决于数据,因此它可能以前从未起作用过,而没有这个问题。