以下函数应该为您提供列表中与其索引相对应的所有数字,即索引0 = 0,并将此数字附加到列表中。
def Utility(l):
Total = []
for i in l:
if i == l[i]:
Total.append(i)
else:
pass
return Total
我的错误:列表索引超出范围。
答案 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