2017-02-16 38 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)] 

也許我錯過了你的觀點。

相關問題