首页 文章

IndexError:列表索引超出范围python - 3.4.3

提问于
浏览
1

如果我执行此代码,则会出现以下错误消息:

IndexError:列表索引超出范围python

def reverse_invert(lst):
    inverse_list = []

    for i in lst:
        if isinstance( i, int ):
             inverse_list.append(lst[i])
        #print(inverse_list)       
             print(i)       
        else:
            break
    return inverse_list

为什么?

4 回答

  • 0
    for i in lst:
    

    将迭代 lst 的元素 .

    如果要迭代索引,请使用

    for i in range(len(lst)):
    
  • 0

    您正在迭代列表的元素,但尝试使用该元素作为索引 . 您应该像这样更改代码:

    def reverse_invert(lst):
    inverse_list = []
    
    for i in lst:
        if isinstance( i, int ):
             inverse_list.append(i) # changed this one.
        #print(inverse_list)       
             print(i)       
        else:
            break
    return inverse_list
    
  • 1

    列表理解可以正常工作:

    a = [1, 'a', 2, 3]
    
    print [d for d in a[::-1] if isinstance(d, int)]
    

    如果你想扭转它只是微小的变化会做:

    a = [1, 'a', 2, 3]
    
    print [d for d in a[::-1] if isinstance(d, int)]
    

    或许我错过了你的观点 .

  • 0

    通常,这意味着您要提供不存在列表元素的索引 .

    例如,如果你的名单是

    [1,3,5,7],并且您要求索引10处的元素,您将远离界限并收到错误,因为只存在元素0到3 .

相关问题