広告スペース(バナー)
🐍Python レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向8▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 41 / 69
浅いコピーと深いコピーの違い
このレッスンでは、浅いコピーと深いコピーの違いを学び、リストや辞書を複製するときの思わぬバグを防げるようになることを目標にします。「Python 浅いコピー 深いコピー」「Python copy deepcopy」で調べている方向けです。
浅いコピーは「一番外側の入れ物だけ」を複製し、中の入れ子オブジェクトは元と共有したままです。深いコピーは中身まですべて複製するので、コピー先を変更しても元のデータに影響しません。.copy()は浅いコピーを、copy.deepcopy()は深いコピーを作ります。
サンプルコードでは、originalという辞書を.copy()で浅くコピーしたshallowの入れ子部分(address["city"])を書き換えると、元のoriginalまで変わってしまう様子を確認できます。一方、copy.deepcopy(original)で深くコピーしたdeepを書き換えても、元のデータには影響しません。
「コピーしたはずなのに、元のデータまで書き換わってしまった」というバグは、この違いを理解していないと起こりやすい初心者のつまずきポイントの1つです。リストや辞書のような「入れ物の中に入れ物がある」データを扱うときほど、この違いが重要になります。
実際の開発現場では、フォームの入力データを一時的に編集する際に元のデータを保持しておきたい場合など、コピーの種類を正しく選べるかどうかが重要になります。状態管理を行うアプリケーションほど、この違いを理解しておくことが求められます。
Python
OUTPUT / 実行結果
💡 初回実行時はPythonエンジンの読み込みに数秒かかります。
🎯
ここまでできればゴール達成!
元のデータを壊さずに、安全に複製できるようになります。
元のデータを壊さずに、安全に複製できるようになります。
広告スペース(バナー)
広告スペース(記事内)