Pythonでは、変数間で値をコピーする際にはcopyメソッドがよく使われます。このメソッドを使うと、元の変数の値が変更されても、コピーされた変数の値は影響を受けません。これを「値渡し」と呼びます。

list1 = [1, 2, 3]
list2 = list1.copy()
list1[0] = 100
print("list1:", list1)
print("list2:", list2)

上記のコードでは、list1の最初の要素の値を変更しても、list2の値は変わりません。これは、copyメソッドによってlist1の値がlist2にコピーされ、list2は新しいオブジェクトを参照しているからです。

しかし、多次元配列など、オブジェクトの中にさらにオブジェクトが含まれる場合は、copyメソッドだけでは値渡しになりません。そのような場合にはcopyライブラリのdeepcopyメソッドを使用します。

import copy

list1 = [[1, 2, 3], [4, 5, 6]]
list2 = list1.copy()
list3 = copy.deepcopy(list1)

list1[0][0] = 100

print("list1:", list1)
print("list2:", list2)
print("list3:", list3)

このコードでは、list1の要素の値を変更しても、list3の値は変わりません。これは、deepcopyメソッドによってlist1の値がlist3に完全にコピーされ、list3は全く新しいオブジェクトを参照しているからです。

以上がPythonのcopyメソッドと値渡しについての基本的な説明です。この知識を持っておくと、Pythonでのプログラミングがよりスムーズになります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です