見てもらった方が早いです。
違いは for 文で回す配列が a
か a.copy()
かです。
上手くいかないコード
a = list(range(10))
for i in a:
if i == 1:
a.remove(1)
elif i == 2:
a.remove(2)
a
output
[0, 2, 3, 4, 5, 6, 7, 8, 9] # 2が削除されてない!
上手くいったコード
a = list(range(10))
# a.copy() にした
for i in a.copy():
if i == 1:
a.remove(1)
elif i == 2:
a.remove(2)
a
output
[0, 3, 4, 5, 6, 7, 8, 9] # 2が削除されている