for loop
で行列/リストを設定したいのですが、同じメソッドの1Dリストと2Dリストの間に異なる結果が観察されました。私はこれがforループを通じてリストを作成するばかげた方法だと知っていますが、誰かが私に何か違いをもたらしたヒントを与えることができますか?リストと行列のforループの反復子
m = [[0] * 4] * 4
print m
m[0] = range(4)
for i in range(4):
m[i][0] = i
print m
、結果は次のとおりです。
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[[0, 1, 2, 3], [3, 0, 0, 0], [3, 0, 0, 0], [3, 0, 0, 0]]
私は[[0, 1, 2, 3], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0]]
であることを期待していました。それは私が予想通りそれは[0,1,2,3]
を印刷
tmp = [0,0,0,0]
for i in range(4):
tmp[i] = i
print tmp
以下のように1次元リストで見つける働いていたが 。取得する
Noooo、ネストされたリストに '*'を使わないでください。参照のみを複製しています。 –