2017-02-16 7 views
1

Если я выполняю этот код, появляется следующее сообщение об ошибке:IndexError: Список форумов вне диапазона питона - 3.4.3

IndexError: list index out of range 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

'i' - это элемент в списке, а не индекс. –

ответ

1
for i in lst: 

будет итерирует элементов из lst.

Если вы хотите перебрать индексов используйте

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

Или просто 'inverse_list.append (i)' –

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 
0

Список понимание будет работать нормально:

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)] 

Или, может быть, Я пропустил вашу мысль.