重複の可能性:
Pythonリストインデックス
result=[range(3)]*2
for i in range(len(result)):
result[i][2]=4*i
print result
私は期待した[[0, 1, 0], [0, 1, 4]]
なぜ私は得るのですか[[0, 1, 4], [0, 1, 4]]
ありがとうございました!
重複の可能性:
Pythonリストインデックス
result=[range(3)]*2
for i in range(len(result)):
result[i][2]=4*i
print result
私は期待した[[0, 1, 0], [0, 1, 4]]
なぜ私は得るのですか[[0, 1, 4], [0, 1, 4]]
ありがとうございました!
意味:
初回: 結果[0][2]=4*0
2回目: 結果[1][2]=4*1
結果 [[0, 1, 4], [0, 1, 4]] が得られます
これが段階的に行っていることです。
反復に「ブレーク」を追加すると、結果は [[0, 1, 0], [0, 1, 0]] になります。
「結果」リストは参照によって機能します。呼び出されると、同じオブジェクトを指しています。
を行うと、内部の同じ[range(3)] * 2
リストへの2つの参照を持つリストが作成されるため、変更とそれぞれが両方を変更します。result[0]
result[1]
[range(3) for i in range(2)]
2 つの異なる結果を含むリストを作成するために使用しrange(3)
ます。