Python: リストのコピー

リストのコピー

 

課題

リストを変数に代入すると、参照先が同一となるため、別々の処理をすることができない。

 

list1 = [6, 1, 8, 0, 3]

# list2 list1 を代入する
list2 = list1

# list1 list 2 の値
print(list1, list2)
# list1 list 2 の参照先: 同一のアドレスであることが分かる
print(id(list1), id(list2))

 

出力結果: 2行目の id() の結果が同じ値になっている

[6, 1, 8, 0, 3]  [6, 1, 8, 0, 3]
2536087841792  2536087841792

 

対応案

copy.copy() を使うと、別のリストを生成することができる。

 

# copy.copy でリストをコピーした場合
list2 = copy.copy(list1)
# list1 list 2 の値
print(list1, list2)
# list1 list 2 の参照先: 別々のアドレスであることが分かる
print(id(list1), id(list2))

 

出力結果: 格納されている値は同じだが、id() の結果が異なる。つまり、別々のリスト

[6, 1, 8, 0, 3]  [6, 1, 8, 0, 3]
2536087841792  2536087817728