错误:列表索引超出范围

时间:2017-09-29 08:11:18

标签: python function range

以下函数应该为您提供列表中与其索引相对应的所有数字,即索引0 = 0,并将此数字附加到列表中。

def Utility(l):
Total = []
for i in l:
    if i == l[i]:
        Total.append(i)
    else:
        pass
return Total

我的错误:列表索引超出范围。

3 个答案:

答案 0 :(得分:1)

for i in l遍历列表l。因此,在每次迭代中,您都会将列表中的元素分配给i

如果您需要for索引,则需要使用enumerate

for idx, ele in enumerate(l):
    # your code

枚举将在每次迭代时返回索引和项。 您的代码可以写成

def Utility(l):
Total = []
for idx, ele in enumerate(l):
    if idx == ele:
        Total.append(idx)

else子句没用,可以删除

答案 1 :(得分:1)

您正在迭代l的元素,而不是迭代索引:

for i in [5,6,7]:
    print(i)
> 5
> 6
> 7

您应该使用enumerate

for i, num in enumerate([5, 6, 7]):
    print(i, num)
> 0 5
> 1 6
> 2 7

答案 2 :(得分:0)

您的代码应为:

def Utility(l):
  Total = []
  for i in range(len(l)):          #point of interest
    if i == l[i]:
        Total.append(i)
    else:
        pass
  return Total

#driver values

IN : l = [0,1,4,6]
OUT : [0,1]

代码中的错误是当您执行for i in l时,i值是l中的元素,因为这些值可能大于l中的元素数量{1}},它会通过Error。喜欢:

l=[5]
for i in l:
   print(i)
   #5
   print(l[i])           #l[5]
   #IndexError: list index out of range