如何在Python中的while循环中修复此错误?

时间:2015-06-24 14:51:19

标签: python

我在Python中有一个列表list1,以及以下while循环:

j = 0
while list1[j] >= list1[j - 1] and j < len(list1):
    # do something here and return k
    # k is always incremented
    j += k

我收到以下错误: IndexError: string index out of range

如何解决此错误?

2 个答案:

答案 0 :(得分:10)

您需要通过长度检查开始您的while条件。 Python short-circuits while循环中的操作,所以当j太大时,它只会抛出错误而不是优雅地结束循环。像这样:

while j < len(list1) and list1[j] >= list1[j - 1]:

循环的第一次迭代是比较list1[0]list1[-1],这是有效,但可能不是你想要做的事情(它比较第一次和list1)的最后一个元素。根据您的目标,您可能希望或不希望使用j = 1开始循环。

答案 1 :(得分:1)

使用and时,如果第一个条件为false,则甚至不检查第二个条件。只需使用:

j = 0
while j < len(list1) and list1[j] >= list1[j - 1]:
    # do something here and return k
    # k is always incremented
    j += k