上級 › イテレート中のリスト変更で要素が飛ばされる › パターン4
イテレート中のリスト変更で要素が飛ばされる
forループでリストを走査しながら同じリストからremove()すると、要素の位置がずれて一部が処理から漏れます。
1 nums = [5, -1, -2, 3, 8] 2 for n in ___________: ^ 3 if n < 0: 4 nums.remove(n) 5 print(nums)
出力: [5, -2, 3, 8]期待: [5, 3, 8] (エラーにはなりません)
空欄を埋めて実行を通す
負の数を取り除くような処理でも同じです。連続して条件に合う要素があると、削除のたびに後続がずれて判定が1つ飛ばしになります。
次の問題