Pythonには、オブジェクトをコピーするための2つの主要な方法があります: copy
とdeepcopy
です。これらは、オブジェクトの種類(ミュータブルまたはイミュータブル)によって異なる結果をもたらします。
copyとは
copy
は、新しい複合オブジェクトを作成し、可能な限り元のオブジェクトに存在するオブジェクトへの参照を挿入します。これは「浅いコピー」とも呼ばれます。
import copy
original_list = [1, 2, [3, 4]]
shallow_copied_list = copy.copy(original_list)
この例では、original_list
の浅いコピーを作成しています。copy
を使用すると、新しいオブジェクトが作成されますが、その値は元のオブジェクトからコピーされます。したがって、一方の値を変更しても、もう一方には影響しません。
deepcopyとは
一方、deepcopy
は新しい複合オブジェクトを作成し、再帰的に元のオブジェクトに存在するオブジェクトのコピーを挿入します。これは「深いコピー」とも呼ばれます。
import copy
original_list = [1, 2, [3, 4]]
deep_copied_list = copy.deepcopy(original_list)
この例では、original_list
の深いコピーを作成しています。deepcopy
を使用すると、新しいオブジェクトが作成され、その値は元のオブジェクトから完全にコピーされます。したがって、一方の値を変更しても、もう一方には影響しません。
まとめ
Pythonのcopy
とdeepcopy
は、オブジェクトのコピーを作成するための強力なツールです。しかし、それらは異なる方法で動作し、異なる結果をもたらします。どちらを使用するかは、特定の問題に最適な解決策によります。.