Spyder IDE で次の python コードをテストしました。2次元配列を 0..31 からまでq
増加する数として出力すると考えています。しかし、実際には q を次のように返します。q[0][0]
q[3][7]
[[24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31]].
コード:
q=[[0]*8]*4
for i in range(4):
for j in range(8):
q[i][j] = 8*i+j
print q
ここで何が起こっているか分かりますか?ステップバイステップでデバッグしました。これは、すべての行の更新が他のすべての行と同期することを示しており、他のプログラミング言語での私の経験とはまったく異なります。