知らんかった...
JavaScript
const data_list = [];
let data = [];
data[0] = 0;
data[1] = 1;
data[2] = 2;
data_list.push(data);
console.log('data:', data); // [0, 1, 2]
console.log('data_list:', data_list); // [[0, 1, 2]]
// data = [];
data[0] = 3;
data[1] = 4;
data[2] = 5;
data_list.push(data);
console.log('data:', data); // [3, 4, 5]
console.log('data_list:', data_list); // [[3, 4, 5], [3, 4, 5]]
Python
data_list = []
data = [0, 0, 0]
data[0] = 0
data[1] = 1
data[2] = 2
data_list.append(data)
print ('data: ', data) # [0, 1, 2]
print ('data_list: ', data_list) # [[0, 1, 2]]
# data = [0, 0, 0]
data[0] = 3
data[1] = 4
data[2] = 5
data_list.append(data)
print ('data: ', data) # [3, 4, 5]
print ('data_list: ', data_list) # [[3, 4, 5], [3, 4, 5]]
よく考えれば当たり前のような気がしますが,1回目に追加された配列と2回目に追加された配列のアドレスが同じなので,参照される頃には同じ値となっているわけです.
期待する結果である [[0, 1, 2], [3, 4, 5]]
を出力するには,適切なタイミングで配列を初期化する必要があります.
思考停止で配列の中身を上書きしてはいけません.
スクリプト言語を使っている場合でも,配列を扱う時ぐらいはメモリを意識するようにしましょう.
ちなみに私はこの方法で実験で集めるはずだったデータを闇に葬りました(泣)(アホ)