X Tutup
Skip to content

Latest commit

 

History

History
98 lines (74 loc) · 3.31 KB

File metadata and controls

98 lines (74 loc) · 3.31 KB
title Python コピーモジュール - Python チートシート
description コピーモジュールは、リスト、オブジェクト、配列などの異なる要素のコピーに関連する一連の関数です。浅いコピーと深いコピーの両方を作成するために使用できます。
Python Copy モジュール

Copy モジュールは、リスト、オブジェクト、配列などのさまざまな要素のコピーに関連する関数のセットです。浅いコピーと深いコピーの両方を作成するために使用できます。

Python 3 の ドキュメントより Python の代入文はオブジェクトをコピーせず、ターゲットとオブジェクトの間にバインディングを作成します。ミュータブルなコレクション、またはミュータブルなアイテムを含むコレクションの場合、一方のコピーを変更しても他方に影響を与えないように、コピーが必要になることがあります。このモジュールは、一般的な浅いコピー操作と深いコピー操作を提供します。

浅いコピー操作 (Shallow copy operations)

浅いコピーは、新しい複合オブジェクトを構築し、次に(可能な限り)元のオブジェクトで見つかったオブジェクトへの参照をその中に挿入します。

copy.copy(x) x の浅いコピーを返します。

import copy
a = [[1],[2],[3]]
# 浅いコピーを作成 (ネストされたリストはまだ参照されている)
b = copy.copy(a)

a
[[1], [2], [3]]
b
[[1], [2], [3]]

copy モジュールをインポートしない場合、使用できません

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'copy' is not defined

深いコピー操作 (Deep copy operations)

深いコピーは、新しい複合オブジェクトを構築し、次に、元のオブジェクトで見つかったオブジェクトのコピーを再帰的に挿入します。

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]]

関連リンク (Relevant links)

  • Cheatsheet: OOP の基本
  • Cheatsheet: リストとタプル
  • Cheatsheet: 辞書
  • Blog: Python のデータ型
  • object()
  • list()
  • dict()
  • slice()
X Tutup