Python でのオブジェクトの複製: 総合ガイド
オブジェクトのコピーの作成は、Python プログラミングの基本的なタスクであり、特に複雑なデータを扱う場合には重要です。構造物。この記事では、Python でのオブジェクトのコピーの複雑さを掘り下げ、特に元のオブジェクトに加えられた変更の影響を受けない独立したオブジェクトの作成に焦点を当てます。
浅いコピーと深いコピー
Python では、オブジェクトをコピーするための主な方法として、浅いコピーと深いコピーという 2 つの方法があります。浅いコピーでは、元のオブジェクトと同じ不変フィールド (整数、文字列など) を参照する新しいオブジェクトが作成されますが、変更可能なフィールド (リスト、辞書など) の新しいコピーが作成されます。
たとえば、次のことを考えてみましょう。コードスニペット:
original_list = [1, 2, 3]
new_list = original_list[:] # Shallow copy
new_list とoriginal_list は別個のオブジェクトのように見えますが、両方とも同じ基になるデータを参照するため、一方のリストに加えられた変更はもう一方のリストにも反映されます。
完全に独立したオブジェクトの作成
真に独立したオブジェクトを作成するには、ディープ コピーに頼らなければなりません。これには、入れ子になった可変構造を含む、すべてのフィールドの新しいコピーの作成が含まれます。 Python の copy.deepcopy() 関数は、この機能を提供します。
前の例を変更してみましょう:
import copy
original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)
ここで、new_list に変更を加えても、original_list:
new_list[2].append(6)
print(original_list) # Output: [1, 2, [4, 5]]
print(new_list) # Output: [1, 2, [4, 5, 6]]
結論
copy.deepcopy() 関数を活用することで、プログラマはオブジェクトの完全に独立したコピーを作成できるため、一方に加えられた変更が他方に影響を与えません。 Python で効果的にオブジェクトを操作するには、浅いコピーと深いコピーの違いを理解することが重要です。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3