IndexError:列表索引超出范围,使用for循环索引

时间:2020-01-24 16:21:01

标签: python

#Check if each element in input list is at least as big as the one before it.
inputList = [9,10,11,12,13]
flag=0
j = 1
i = 0
for i in range(len(inputList)):
    if inputList[i] < inputList[j] :
        flag=0
    elif inputList[i] > inputList[j] :
        flag=1
    else:
        flag=1
        print("Unexpected Error!!")

    if j < len(inputList):
        j=j+1
    else:
        j=j

if flag == 1 :
    print("Condition Failed")
else:
    print("Condition Passed")

我正在尝试从for循环访问列表的索引,但是它给了我索引错误。

我尝试手动打印索引,但它却可以正常工作

Traceback (most recent call last):
  File "prac3.py", line 13, in <module>
    if inputList[i] < inputList[j] :
IndexError: list index out of range

3 个答案:

答案 0 :(得分:2)

j总是比i大1,因此,当i是最后一个元素的索引时,j超出范围-因此出错。 / p>

答案 1 :(得分:1)

因此,在对@ekhumoro的答案进行一段时间后,我找到了解决方法。

res = all(b > a for a, b in zip(x, x[1:]))
if res == true:
    print("")

答案 2 :(得分:0)

尝试一下,

#Check if each element in input list is at least as big as the one before it.
inputList = [9,10,11,12,13]
flag=0
j = 1
i = 0
for i in range(len(inputList)):
    if inputList[i] < inputList[j] :
        flag=0
    elif inputList[i] > inputList[j] :
        flag=1
    else:
        flag=1
        print("Unexpected Error!!")
    j=j+1 if j < len(inputList) else j=j

if flag == 1 :
    print("Condition Failed")
else:
    print("Condition Passed")

为了避免该错误,我仅更改了一行。您知道更好的逻辑来实现自己的算法。
j=j+1 if j < len(inputList) else j=j