2017-01-22 16 views
0

非常に奇妙で独特なことが起こりました。私はCompare 1 column of 2D array and remove duplicates Pythonで質問に答えるためにしようとしていたと私は次のような答えをした(その質問への既存の回答の一部は、コンパクトで効率的なくらいなので、私は投稿しなかった)が、これは私が作ったコードです。同じコードからのPythonの異なる結果

array = [['abc',2,3,], 
     ['abc',2,3], 
     ['bb',5,5], 
     ['bb',4,6], 
     ['sa',3,5], 
     ['tt',2,1]] 

temp = [] 
temp2 = [] 

for item in array: 
    temp.append(item[0]) 

temp2 = list(set(temp)) 

x = 0 
for item in temp2: 
    x = 0 
    for i in temp: 
     if item == i: 
      x+=1 
     if x >= 2: 
      while i in temp: 
       temp.remove(i) 

for u in array: 
    for item in array: 
     if item[0] not in temp: 
      array.remove(item) 

print(array) 

コードは動作するはずです。与えられたリンクの質問者が要求したことを実行します。しかし、私は結果の二対の取得:実行したときに

[['sa', 3, 5], ['tt', 2, 1]] 

そして

[['bb', 4, 6], ['tt', 2, 1]] 

はなぜ同じすべてで同じコンパイラで同じオペレーティングシステム上で同じコードは2つの異なる答えを生成していますか?注:結果は交替しません。上記の2つの可能な出力の間にランダムです。

+0

あなたは 'temp'と' array'を反復していて、その中から値を取り除いています。これは、あなたの望むことですか? – ForceBru

+0

ああ!ありがとう@ForceBru。あなたが答えとして投稿する場合、私は正しいとマークすることができます。 – Octo

答えて

3

Pythonセットには特定の順序はありません。つまり、実装は任意の順序を自由に選択できるため、プログラムの実行ごとに異なる可能性があります。あなたがここで設定に変換

temp2 = list(set(temp)) 

は結果を注文すると、あなたの一貫したを与える(しかし、そうでないかもしれない右)の結果必要があります。

temp2 = sorted(set(temp)) 

arrayのための私の結果。

ソート:

temp2 = sorted(set(temp)) 

arrayは次のようになります。

[['bb', 4, 6], ['tt', 2, 1]] 

temp2 = sorted(set(temp), reverse=True) 

arrayは次のようになります。

[['sa', 3, 5], ['tt', 2, 1]] 
関連する問題