list_a = [1,2,3]
list_b = list_a
list_b[0] = "a"
print(list_a)
print(list_b)
上のコードを実行すると、結果は以下のようになる。
["a",2,3]
["a",2,3]
書き換えたのは、list_bの0番目の要素だけのはずだが、printしてみると明らかなように、list_aもまた0番目の要素が"a"となっている。これはリストが参照され、同じリストとして扱われるためである。
ここで、この解決策を記述しておく。
参照せずに、まったく同じリストを作成したいときはcopy()を用いることで可能となる。
そのコードを実際に記述すると
import copy
list_a = [1,2,3]
list_b = copy.copy(list_a)
list_b[0] = "a"
print(list_a)
print(list_b)
先ほどのコードと、copyの部分だけが異なっているが、このコードを実行すると、以下のようになる。
[1,2,3]
["a",2,3]
このように、list_bだけが書き換えられて、list_aはそのままのリストとして取り出すことに成功した。