簡體   English   中英

為什么在 python 3 中出現“彈出索引超出范圍”錯誤?

[英]Why do I get 'pop index out of range' error in python 3?

我對L.pop(i) function 有疑問。 這是我的代碼:

L = []  

for i in range(3):
    value = int(input('Enter value ' + str( i+1)+ ': '))  

    L.append(value)

print(L)

limit = int(input('Enter a limit: '))
for i in L:
    if i > limit:
        print('Index of first element over',limit,':',i)
        L.pop(i)  
        break
    
print(L)     

它一直有效,直到那部分: L.pop(i) 它給

IndexError: pop index out of range

那么L.pop(i)有什么問題呢?

我認為您混淆了pop (刪除索引處的元素)和remove (刪除元素本身)。 使用for i in L:迭代元素,然后在printL.pop(i)它們視為索引。

假設您要打印大於limit的第一個元素索引,然后刪除該元素,您可以嘗試以下操作:

for i in range(len(L)):
    if L[i] > limit:
        print('Index of first element over',limit,':',i)
        L.pop(i)  
        break

或這個:

for i, e in enumerate(L)::
    if e > limit:
        print('Index of first element over',limit,':',i)
        L.pop(i)  # or L.remove(e), but pop might be a bit faster
        break

注意:從列表中刪除元素,無論是通過remove還是pop ,同時迭代同一個列表通常有點問題。 在這種情況下,這是可以的,因為您在刪除元素后立即退出循環,但請記住這一點,以防您希望break其擴展到例如刪除所有大於limit的元素。

暫無
暫無

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

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