我有這個python代碼,一個接一個地,整數列表中的項目(在發佈的代碼中名爲'seen')與所有另一個列表的.f字段中的項目(在發佈的代碼中名爲'maxx')。 在每次迭代時,我都會計數(通過'c'變量)第j個項目出現在'maxx'列表中的次數,如果它出現少於三次,我想從列表中彈出()它倍。 該代碼完美地工作,但是彈出一個項目'將'看到'列表中的任何後續項目拉回到一個位置,因此每當if條件滿足時,循環就會錯過列表的下一個項目。 我想不出有辦法解決這個問題,有什麼想法?PYTHON - 'for'索引由於list.pop()調用而改變
謝謝。
下面是代碼:
for indj,j in enumerate(seen): # every item in the 'seen' list..
c=0
for k in maxx: # ..checks for a matching item in the 'maxx' list
if j==k.f:
c=c+1;
if c<3: # if the item appears less than 3 times we pop it
seen.pop(indj)
編輯:忘了說我試圖在if結構的末尾添加
indj=indj-1
j=seen[indj]
,但沒有奏效
改變原來的列表迭代之前,確保已看到副本:'爲indj,j枚舉(見[:]):'。這在Python教程中有描述。 – michaelmeyer