簡體   English   中英

如何修復“列表索引超出范圍錯誤”

[英]How do I fix "List index out range error"

我是編程新手,現在我正在學習排序,所以我正在嘗試插入排序,但我不知道為什么程序會顯示此錯誤“列表索引超出范圍。這是代碼片段。

代碼截圖

所以從你的問題我可以理解的是你正在嘗試遍歷你的列表並對它的元素進行排序,在這種情況下你必須使用range()len()函數,所以現在它應該看起來像:

for i in range(len(l)):

len() function 返回給定 object 的長度(在您的情況下列出)。 range() function 返回從 0 到給定數字的數字序列。

A = [1,3,5,7,9,2,4,6,8]

元素 0 = 1

元素 1 = 3

……

元素 4 = 9 ---> A[9] = 超出范圍,嘗試訪問列表中的第 9 個元素,但列表的長度為 8。

如果 len(list) 是列表的長度,range(N) 是從 0 到 N-1 的整數,則 range(len(list)) 是從 0 到 1 的整數,小於列表的長度,即,列表的所有合法索引。

這應該工作:

A = [1,3,5,7,9,2,4,6,8]

for i in range(len(A)):
    j=i-1
    t=A[i]
    while j>=0 and t <A[j]:
        A[j+1] = A[j]
        j=j-1
    
    A[j+1]=t

print(A)

使用一個參數調用 range() 會給出一系列從 0 開始的數字,包括每個整數,但不包括用戶提供的作為 stop 的數字。 python 中的 range() function 最多可以占用 3 個 arguments range(start,stop,step) 調用范圍,只有一個參數,只設置停止。

例如:

x = range(9)
    for i in x:
print(x)

將打印數字 1,2,3,4,5,6,7,8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM