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 回の内包表記)が正解です。

✅ 理解度チェック

入れ子のリストを完全に独立して複製するには?