forでリストを処理するときに
そのリストから値をremoveすると次の値が飛ばされる
その対策として
for i in tuple(リスト名):
としてタプルに変換して問題解決はしているのだけど
王道的な別な解決策ってある?