2016-06-11 26 views
2
sr = [12,13,4] 
thre = 1 

kaju = [] 

for p in range(len(sr)): 
    sr[p] -= thre 
    kaju.append(sr) 
    print sr 

print kaju 

は結果がとして出てきた:異なる出力

[11, 13, 4] 
[11, 12, 4] 
[11, 12, 3] 
[[11, 12, 3], [11, 12, 3], [11, 12, 3] 

私は同じではありませんなぜSRとkaju

答えて

0

リストは参照渡しされているかわかりませんPythonのしたがって、srkajuに追加するときは、同じリストに別の参照を追加するだけです。したがって、印刷文は各繰り返しでsrへの変更を反映しますが、kajuには同じリストへの参照だけが含まれています。

あなたがkajuの要素が各反復で変更を反映する場合は、内蔵のlist()機能

for p in range(len(sr)): 
    sr[p] -= thre 
    kaju.append(list(sr)) 
    print sr 

print kaju 

出力を行うことができ、各反復、上srの値をコピーする必要があります

[11, 13, 4] 
[11, 12, 4] 
[11, 12, 3] 
[[11, 13, 4], [11, 12, 4], [11, 12, 3]] 
0

あなたはsrにあなたが追加呼び出すたびに全体のリストを追加しますので。おそらく追加したかっただけでしょうsr[p]

関連する問題