上級 › イテレート中のリスト変更で要素が飛ばされる › パターン1
イテレート中のリスト変更で要素が飛ばされる
forループでリストを走査しながら同じリストからremove()すると、要素の位置がずれて一部が処理から漏れます。
1 nums = [1, 2, 2, 3] 2 for n in ___________: ^ 3 if n == 2: 4 nums.remove(n) 5 print(nums)
出力: [1, 2, 3]期待: [1, 3] (エラーにはなりません)
空欄を埋めて実行を通す
リストを変更しながら同じリストをイテレートすると、要素がずれて一部が処理から漏れます。nums[:]でコピーを作ってからイテレートすれば元のリストを安全に変更できます。
次の問題