![](/img/trans.png)
[英]Why do I get "pop index out of range" error when running this?
[英]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:
迭代元素,然后在print
和L.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.