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