簡體   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