Pythonで複数の変数を初期化するときに
value_a = 0
value_b = 0
value_c = 0
value_e = 0
value_f = 0
と書くと全ての変数が0で初期化されます。
しかし、次のように書くこともできます。
value_a = value_b = value_c = value_d = value_e = value_f = 0
この書き方だと1行で書けてコードが縦長にならないメリットがあります。
しかし、この書き方をリストでも行うと
list_a = list_b = list_c = list_d = list_e = list_f = 0
想定外のことが起きます。
次のコードの場合
list_a = list_b = list_c = list_d = list_e = list_f = []
list_a.append(1)
list_b.append(2)
list_c.append(3)
list_d.append(4)
list_e.append(5)
list_f.append(6)
print(list_a)
print(list_b)
print(list_c)
print(list_d)
print(list_e)
print(list_f)
結果は、
[1]
[2]
[3]
[4]
[5]
[6]
ではなく、
[1,2,3,4,5,6]
[1,2,3,4,5,6]
[1,2,3,4,5,6]
[1,2,3,4,5,6]
[1,2,3,4,5,6]
[1,2,3,4,5,6]
となってしまいます。
list_aからlist_fが同じオブジェクトとして扱われてしまい、格納されているデータが同じになってしまうので注意が必要。
list_a = []
list_b = []
list_c = []
list_d = []
list_e = []
list_f = []
もしくは
list_a = list_b = list_c = list_d = list_e = list_f = [], [], [], [], [], []
と書いて初期化すると想定していた挙動となる。