Pythonの浅いコピーと深いコピー
copyモジュールの関数
copy.copy(x)
xの浅い (shallow) コピーを返す
新たな複合オブジェクトを作成し、その後 (可能な限り) 元のオブジェクト中に見つかったオブジェクトに対する 参照 を挿入します。
辞書型の浅いコピーは dict.copy() で、リストの浅いコピーはリスト全体を指すスライス (例えば copied_list = original_list[:]) でできます。
copy.deepcopy(x[, memo])
xの深い (deep) コピーを返す
新たな複合オブジェクトを作成し、その後元のオブジェクト中に見つかったオブジェクトの コピー を挿入します。
検証準備
code:py
In 2: l = 1,2,3], 4,5,6, [7,8,9 In 3: l_shallow = copy.copy(l) In 4: l_deep = copy.deepcopy(l) 深いコピーでは、オブジェクト中のオブジェクトがコピー(新しくオブジェクトが生成)されていることがわかる
code:py
浅いコピーのリスト内の要素は、元のリストの要素と同じオブジェクトを参照しているので以下のようになる
code:py
In 17: l_shallow0.insert(0, 0)