如果我执行此代码,则会出现以下错误消息:
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
为什么?
答案 0 :(得分:1)
for i in lst:
将迭代lst
的元素。
如果要迭代索引,请使用
for i in range(len(lst)):
答案 1 :(得分: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
答案 2 :(得分: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)]
或许我错过了你的观点。
答案 3 :(得分:0)
通常,这意味着您提供的列表元素不存在的索引。
例如,如果您的清单是
[1,3,5,7],并且你要求索引10处的元素,你将远离界限并收到错误,因为只存在元素0到3。