[英]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.