2017-02-16 3 views
1

Wenn ich diesen Code ausführen, wird folgende Fehlermeldung angezeigt:Indexerror: Listenindex Python außerhalb des zulässigen Bereichs - 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 

Warum ist es?

+4

'i' ist das Element in der Liste, nicht der Index. –

Antwort

1
for i in lst: 

wird die Elemente von lst iterieren.

Wenn Sie Indizes iterieren, verwenden

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

Oder nur 'inverse_list.append (i)' –

0

Sie sind die Elemente der Liste iterieren aber versuchen, das Element als Index zu verwenden. Sie sollten Ihren Code wie folgt ändern:

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

Liste Verständnis würde gut funktionieren:

a = [1, 'a', 2, 3] 

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

Und wenn Sie es nur winzige Änderung tun würde umkehren wollen:

a = [1, 'a', 2, 3] 

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

Oder vielleicht Ich habe deinen Standpunkt vermisst.

Verwandte Themen