ホームページ >バックエンド開発 >Python チュートリアル >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 サイトの他の関連記事を参照してください。