ホームページ  >  記事  >  バックエンド開発  >  Python でオブジェクトの完全に独立したコピーを作成するには?

Python でオブジェクトの完全に独立したコピーを作成するには?

DDD
DDDオリジナル
2024-11-03 17:05:03821ブラウズ

How to Create Truly Independent Copies of Objects in Python?

Python でのオブジェクトの複製: 総合ガイド

オブジェクトのコピーの作成は、特に複雑なデータを扱う場合、Python プログラミングの基本的なタスクです構造物。この記事では、Python でのオブジェクトのコピーの複雑さを掘り下げ、特に元のオブジェクトに加えられた変更の影響を受けない独立したオブジェクトの作成に焦点を当てます。

浅いコピーと深いコピー

Python では、オブジェクトをコピーするための主な方法として、浅いコピーと深いコピーという 2 つの方法があります。浅いコピーでは、元のオブジェクトと同じ不変フィールド (整数、文字列など) を参照する新しいオブジェクトが作成されますが、変更可能なフィールド (リスト、辞書など) の新しいコピーが作成されます。

たとえば、次のことを考えてみましょう。コード スニペット:

<code class="python">original_list = [1, 2, 3]
new_list = original_list[:]  # Shallow copy</code>

new_list とoriginal_list は別個のオブジェクトのように見えますが、1 つのリストに加えられた変更はすべて

完全に独立したオブジェクトの作成

真に独立したオブジェクトを作成するには、ディープ コピーに頼る必要があります。これには、入れ子になった可変構造を含む、すべてのフィールドの新しいコピーの作成が含まれます。 Python の copy.deepcopy() 関数は、この機能を提供します。

前の例を変更してみましょう:

<code class="python">import copy

original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)</code>

ここで、new_list を変更しても影響はありません。 original_list:

<code class="python">new_list[2].append(6)
print(original_list)  # Output: [1, 2, [4, 5]]
print(new_list)       # Output: [1, 2, [4, 5, 6]]</code>

結論

copy.deepcopy() 関数を活用することで、プログラマはオブジェクトの完全に独立したコピーを作成し、オブジェクトに加えられた変更が確実に反映されるようにすることができます。他のものには影響を与えません。浅いコピーと深いコピーの違いを理解することは、Python で効果的にオブジェクトを操作するために重要です。

以上がPython でオブジェクトの完全に独立したコピーを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。