我在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
如何解决此错误?
答案 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