Skip to main content
 首页 » 编程设计

python之列表索引超出范围 : python

2025年05月04日11yjmyzz

我有一个包含这些元素的列表(列表由 str(elements) 组成):

['-0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'] 

我想处理它以获得这样的输出

['-0', '1#', '15#'] 

如果元素是 -x 我想把它留在那里,所以我取最后 2 个元素,如果间隙为 1,则删除最后一个元素之前的元素。 这是代码:

            for k in range(len(l1)): 
                if "-" in (l1[-k] or l1[-k-1]): 
                    print("debuggggg") 
                    pass 
                elif(int(l1[-k]) - int(l1[-k-1])== 1 and int(l1[-k]) - int(l1[-k-2])== 2) : 
                    a= l1[-2] 
                    print(a) 
                    l1.remove(a) 
                    #print("debug 2") 
                elif(int(l1[-k]) - int(l1[-k-1])== 1): 
                    a= l1[-2] 
                    l1.remove(a) 
                    l1[-2] = l1[-2] +"#" 
                    l1[-1] = l1[-1] +"#" 
                    print("3") 
                #elif(type(l1[-2]) is str): 
                    #pass 

问题在这里:

 debuggggg 
    14 
    13 
    12 
    11 
    10 
    9 
    8 

最后 2 个元素不包含字符“-”,但似乎包含。 此外,在 8 循环脚本崩溃后:

 elif(int(l1[-k]) - int(l1[-k-1])== 1 and int(l1[-k]) - int(l1[-k-2])== 2) : 
IndexError: list index out of range 

但不在列表范围内。有什么问题?

请您参考如下方法:

你的第二个问题

但不在列表范围内。问题是什么?

只是超出范围的错误。

l1[-len(l1)-1] 

引发此错误。您正在您的代码中执行此操作。

for k in range(len(l1)): 
    ... 
    elif(int(l1[-k]) - int(l1[-k-1])== 1 and int(l1[-k]) - int(l1[-k-2])== 2) :#<--here(l1[-k-2])