[英]How to fix for loop error skipping 1 value a time?
我正在做一個迷你學校項目,並且收到標題中提到的錯誤e。 我該如何解決我的錯誤?
這是一個迷你的“足球經理”項目,我知道我的錯誤是這一行!
equipas=['Napoli','Inter','Milan','Roma','Sampdoria','Atalanta','Lazio','Fiorentina','Torino','Sassuolo','Parma','Genoa','Cagliari','SPAL','Udinese','Empoli','Bologna','Frosinone','Chievo']
for m in range(0,99):
try:
z=equipas[m]
except IndexError:
a+=1
if a==3:
break
else:
equipa=equipas[m]
equipas.remove(equipa)
pontos=random.randint(0,57)
equipa=equipa,pontos
listaequipa.append(equipa)
print(listaequipa)
當程序打印變量listaequipa
,我只能在最后一行得到它:
[('Napoli', 44), ('Milan', 57), ('Sampdoria', 31), ('Lazio', 14), ('Torino', 3), ('Parma', 13), ('Cagliari', 51), ('Udinese', 8), ('Bologna', 21), ('Chievo', 38)]
您不應該遍歷列表的索引並 同時從列表中刪除元素。 這就是導致錯誤的原因。
幸運的是,您有兩種選擇,請選擇一個您更習慣的選擇:
None
)標記要刪除的項目,然后使用filter
或列表理解功能一次刪除所有項目。 當您使用以下方法從列表中刪除項目時
list.remove(item)
它不會用空值代替該項目,而是將其完全刪除,其余元素代替它。 例如:
array = ['1', '2', '3', '4', '5', '6']
for x in range(5):
array.remove(array[x])
在循環的第一遍之后,數組現在看起來像:
['2', '3', '4', '5', '6']
然后for循環將x
遞增,因此它會刪除當前列表中的第二個元素:
['2', '4', '5', '6']
依此類推,跳過原始列表的第二個值。
因此,請仔細閱讀您的代碼,看看可能會在哪里發生。
希望這可以幫助 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.