繁体   English   中英

错误:列表索引超出范围

[英]Error: list index out of range

下面的函数应该给你一个列表中与它的索引相对应的所有数字,即索引 0 = 0,并将这个数字附加到一个列表中。

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

我确实收到错误:列表索引超出范围。

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

如果你想for索引,你需要使用enumerate

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

enumerate 将在每次迭代时返回索引和项目。 你的代码可以这样写

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

else 子句没用,可以去掉

您正在迭代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

你的代码应该是:

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

#驱动程序值

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

您的代码中的错误是,当您for i in l执行操作时, i值是l的元素,并且由于这些值可能大于l的元素数,因此它将通过Error 喜欢:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM