ホームページ >バックエンド開発 >Python チュートリアル >Python でリストを適切にディープコピーするにはどうすればよいですか?

Python でリストを適切にディープコピーするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-04 02:55:38665ブラウズ

How to Properly Deep Copy a List in Python?

リストをディープ コピーするにはどうすればよいですか?

リストのディープ コピーを作成しようとするときは、リストの使用を避けることが重要です( ) コンストラクター。 list() は別個のリストを生成するように見えますが、浅いコピーを実行するだけで、元のリストの要素への参照は保持されます。したがって、新しいリストに加えられた変更は元のリストにも影響します。

解決策: copy.deepcopy() を使用したディープ コピー

真のディープ コピーの場合、コピー.deepcopy() 関数を使用する必要があります。この関数は、リスト内のすべての要素を再帰的に複製し、新しいリストが元のリストから独立していることを保証します。

例:

import copy

# Original list
E0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Shallow copy
E0_copy1 = list(E0)

# Deep copy
E0_copy2 = copy.deepcopy(E0)

# Modify shallow copy
E0_copy1[0][0] = 0

# Observe that changes to the shallow copy also affect the original
print(E0)  # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]

# Modify deep copy
E0_copy2[1][1] = 0

# Note that changes to the deep copy do not affect the original
print(E0)  # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]

説明:

list() は、元の要素を参照して新しいリストを初期化します。したがって、コピーに加えられた変更は元のリストに反映されます。一方、

copy.deepcopy() は、リスト内のすべてのネストされた要素のコピーを作成し、完全に独立したコピーを作成します。ディープコピーを変更しても、元のリストには影響しません。

以上がPython でリストを適切にディープコピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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