Pythonの深いコピーと浅いコピーにはどのような違いがありますか?
Pythonでは、ディープコピーとシャローコピーは、オブジェクトをコピーするための2つの異なる方法です。
1、シャローコピー(浅いコピー):シャローコピーは、新しいオブジェクトを作成し、元のオブジェクトの要素を新しいオブジェクトにコピーする方法です。ただし、元のオブジェクトの要素が変更可能なオブジェクト(リスト、辞書など)である場合、新しいオブジェクトの要素は引き続き元のオブジェクトの要素への参照です。これは、新しいオブジェクトの変更が元のオブジェクトに影響を与えることを意味します。
例:
import copy
original_list = [1, [2, 3], 4]
new_list = copy.copy(original_list)
new_list[1].append(5)
print(original_list) # 输出: [1, [2, 3, 5], 4]
2、ディープコピー:ディープコピーとは、完全に元のオブジェクトと独立した新しいオブジェクトを作成し、元のオブジェクトと新しいオブジェクトの要素がすべて独立しており、互いに影響を及ぼさないようにします。ディープコピーは元のオブジェクト内のすべてのサブオブジェクトを再帰的にコピーします。
例えば:
import copy
original_list = [1, [2, 3], 4]
new_list = copy.deepcopy(original_list)
new_list[1].append(5)
print(original_list) # 输出: [1, [2, 3], 4]
したがって、ディープコピーは元のオブジェクトの完全な独立したコピーを作成しますが、シャローコピーは元のオブジェクトの参照のみをコピーし、元のオブジェクトと新しいオブジェクトの間の影響が異なります。