| title | Python コピーモジュール - Python チートシート |
|---|---|
| description | コピーモジュールは、リスト、オブジェクト、配列などの異なる要素のコピーに関連する一連の関数です。浅いコピーと深いコピーの両方を作成するために使用できます。 |
Copy モジュールは、リスト、オブジェクト、配列などのさまざまな要素のコピーに関連する関数のセットです。浅いコピーと深いコピーの両方を作成するために使用できます。
Python 3 の ドキュメントより Python の代入文はオブジェクトをコピーせず、ターゲットとオブジェクトの間にバインディングを作成します。ミュータブルなコレクション、またはミュータブルなアイテムを含むコレクションの場合、一方のコピーを変更しても他方に影響を与えないように、コピーが必要になることがあります。このモジュールは、一般的な浅いコピー操作と深いコピー操作を提供します。浅いコピーは、新しい複合オブジェクトを構築し、次に(可能な限り)元のオブジェクトで見つかったオブジェクトへの参照をその中に挿入します。
copy.copy(x) x の浅いコピーを返します。
import copy
a = [[1],[2],[3]]
# 浅いコピーを作成 (ネストされたリストはまだ参照されている)
b = copy.copy(a)
a[[1], [2], [3]]
b[[1], [2], [3]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'copy' is not defined
深いコピーは、新しい複合オブジェクトを構築し、次に、元のオブジェクトで見つかったオブジェクトのコピーを再帰的に挿入します。
copy.deepcopy(x[, memo]) x の深いコピーを返します。
import copy
a = [[1],[2],[3]]
# 深いコピーを作成 (完全に独立したコピー)
b = copy.deepcopy(a)
# オリジナルを変更
a[0][0] = 0
a[1] = None
a[[0], None, [3]]
b[[1], [2], [3]]
- Cheatsheet: OOP の基本
- Cheatsheet: リストとタプル
- Cheatsheet: 辞書
- Blog: Python のデータ型
- object()
- list()
- dict()
- slice()