私はPythonで二次元ベクトルを構築していましたが、最初はすべてゼロにしたかったので、numpyを使いたくなかったので、これを試しました:
columns = 8
rows = 5
m = [[0]* (columns)] * (rows)
m[3][2] = 1
print m
そして、私は予期しない動作をしました:
>> [[0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0]]
このように二次元配列を構築すると、各行が単一の行への参照になるように見えるため、それらのいずれかに書き込むと、それらすべてに書き込むことになります。
一部の人には明らかなように聞こえるかもしれませんが、私は少し靴下を履きました. もちろん、別のアプローチを使用して修正できますが、なぜこれが起こっているのか知りたいです。
誰でも説明できますか?で単純な配列を作成すると、なぜこれが起こらないのです[0] * size_of_array
か?