Pythonでリストをコピーする方法について説明します。リストはPythonの基本的なデータ構造で、そのコピー方法はいくつかあります。
1次元リストのコピー
1次元リストのコピーは比較的簡単です。以下に示すように、copy.deepcopy()
、スライス、list()
などを使用してコピーを作成できます。
import copy
list_1 = [0,1,2]
list_2 = copy.deepcopy(list_1) # deepcopy()を使う
list_3 = list_1[:] # 元のリストをスライスする
list_4 = list(list_1) # list()を使う
list_2[0] = 1000
list_3[0] = 2000
list_4[0] = 3000
print(list_1) # [0, 1, 2]
print(list_2) # [1000, 1, 2]
print(list_3) # [2000, 1, 2]
print(list_4) # [3000, 1, 2]
2次元リストのコピー
2次元以上のリストをコピーする場合、copy.deepcopy()
を使用する必要があります。スライスやlist()
ではうまくいきません。
import copy
list_1 = [[0,1,2], [3,4,5]]
list_2 = copy.deepcopy(list_1)
list_2[0][0] = 1000
print(list_1) # [[0, 1, 2], [3, 4, 5]]
print(list_2) # [[1000, 1, 2], [3, 4, 5]]
注意点
リストを=
で代入すると、新しいリストが作成されるのではなく、既存のリストへの新しい参照が作成されます。そのため、一方のリストを変更すると、もう一方も変更されます。
list_1 = [0,1,2,3]
list_2 = list_1
list_2[0] = 1000
print(list_1) # [1000, 1, 2, 3]
print(list_2) # [1000, 1, 2, 3]
この記事がPythonでリストをコピーする方法についての理解に役立つことを願っています。