Python 入門コース / 第3章 データ構造(第16〜24回) / レッスン 18
スライスとコピーの落とし穴
コピーしたつもりが…
b = a はリストを複製しません。同じリストに 2 つ目の名札を付けただけです。片方を変えるともう片方も変わります。
editor.py
入れ子だと浅いコピーでは足りない
copy() は1 段目だけを複製します。中にリストが入っていると、内側は元と共有されたままです。丸ごと独立させたいときは copy.deepcopy() を使います。
editor.py
二次元リスト(リストの中のリスト)を作るときも同じ罠があります。[[0] * 3] * 2 は同じ行を 2 回並べただけなので、1 行目を変えると 2 行目も変わります。[[0] * 3 for _ in range(2)](第 23 回の内包表記)が正解です。
✅ 理解度チェック
入れ子のリストを完全に独立して複製するには?