0

重複の可能性:
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]]

ありがとうございました!

4

2 に答える 2

0
  • リストの「結果」: [[0, 1, 2], [0, 1, 2]]
  • あなたの反復は次のとおりです。「for i in range(len(result))」
  • len(結果) は: 2
  • 範囲 (2) は: [0,1]

意味:

初回: 結果[0][2]=4*0

2回目: 結果[1][2]=4*1

結果 [[0, 1, 4], [0, 1, 4]] が得られます

これが段階的に行っていることです。

反復に「ブレーク」を追加すると、結果は [[0, 1, 0], [0, 1, 0]] になります。

「結果」リストは参照によって機能します。呼び出されると、同じオブジェクトを指しています。

于 2013-01-29T16:41:40.877 に答える
0

を行うと、内部の同じ[range(3)] * 2リストへの2つの参照を持つリストが作成されるため、変更とそれぞれが両方を変更します。result[0]result[1]

[range(3) for i in range(2)]2 つの異なる結果を含むリストを作成するために使用しrange(3)ます。

于 2013-01-29T16:35:12.373 に答える