Pythonの浅いコピーと深いコピーの操作
Pythonには、 copyというモジュールがあります。 。このモジュールを使用して、ディープコピーとシャローコピーを実行できます。 Pythonでは、代入ステートメントはオブジェクトをコピーしません。ターゲットとメインオブジェクトの間にバインディングを作成します。
このモジュールを使用するには、-
を使用してインポートする必要がありますimport copy
メソッドcopy.copy(x)
このメソッドは、オブジェクトxの浅いコピーを作成するために使用されます。シャローコピーの場合、オブジェクトの参照が別のオブジェクトにコピーされます。したがって、コピーされた参照に変更があると、メインオブジェクトのコンテンツが変更されます。
メソッドcopy.deepcopy(x)
このメソッドは、オブジェクトxのディープコピーを作成するために使用されます。ディープコピーの場合、メインオブジェクトからデータを取得して個々のオブジェクトを作成します。したがって、コピーされた参照に変更があった場合でも、メインオブジェクトは同じままです。
サンプルコード
import copy my_mat = [[11,22,33],[44,55,66],[11,22,33]] print('Matrix Before Updation: ' + str(my_mat)) new_mat = copy.copy(my_mat) #Make a shallow copy and update on copied object new_mat[2][0] = 77 new_mat[2][1] = 88 new_mat[2][2] = 99 print('Matrix After Updation: ' + str(my_mat)) #Original Matrix Updated my_mat = [[11,22,33],[44,55,66],[11,22,33]] new_mat_deep = copy.deepcopy(new_mat) print('\nMatrix Before Updation: ' + str(my_mat)) new_mat_deep[2][0] = 77 new_mat_deep[2][1] = 88 new_mat_deep[2][2] = 99 print('Matrix After Updation: ' + str(my_mat)) # Original Matrix unchanged print('New Matrix: ' + str(new_mat_deep)) # Original Matrix unchanged
出力
Matrix Before Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]] Matrix After Updation: [[11, 22, 33], [44, 55, 66], [77, 88, 99]] Matrix Before Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]] Matrix After Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]] New Matrix: [[11, 22, 33], [44, 55, 66], [77, 88, 99]]>
-
Javaでのディープコピーとシャローコピー
ディープコピーとシャローコピーはどちらも、さまざまな方法で指定されたオブジェクトのコピーを作成することを指します- 浅いコピー これは基本的にオブジェクトの新しいインスタンスを作成し、元のデータセットから新しく作成されたインスタンスにすべてのデータをコピーします。これは、新しく作成されたインスタンスを元のオブジェクトに具体的にキャストする必要があることを意味します。 「浅いクローン」とも呼ばれます。 例 import java.util.* ; class Demo{ private int[] my_data; public Demo(i
-
PythonとTkinterを使用してクリップボードからコピーする
クリップボードからコピーするには、 clipboard_get()を使用できます Tkinterの方法。例を見て、クリップボードからデータを取得してTkinterウィンドウに表示する方法を見てみましょう。 ステップ- tkinterライブラリをインポートし、tkinterフレームのインスタンスを作成します。 ジオメトリを使用してフレームのサイズを設定します メソッド。 次に、 clipboard_get()を呼び出します クリップボードからテキストを取得し、データを変数 cliptextに保存します 。 クリップボードのテキストを表示するためのラベルを作成します。 クリ