2017-01-22 19 views
0

Eine sehr seltsame und seltsame Sache passiert ist. Ich habe versucht, die Frage zu Compare 1 column of 2D array and remove duplicates Python zu beantworten und ich habe folgende Antwort (was ich nicht schreiben, da einige der bestehenden Antworten auf diese Frage sehr kompakt und effizient), aber das ist der Code, den ich gemacht:Python verschiedene Ergebnisse aus dem gleichen Code

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) 

Der Code sollte funktionieren, was der Fragesteller bei dem angegebenen Link angefordert hat. Aber ich habe zwei Paare Ergebnisse:

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

Und

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

Warum der gleiche Code auf dem gleichen Betriebssystem auf dem gleichen Compiler auf demselben alles produziert zwei unterschiedliche Antworten bei der Ausführung? Hinweis: Die Ergebnisse wechseln sich nicht ab. Es ist zufällig zwischen den zwei möglichen Ausgaben, die ich oben aufgelistet habe.

+0

Sie iterieren über 'temp' und' array', während Sie Werte daraus entfernen. Ist das was du willst? – ForceBru

+0

Ah! Danke @ForceBru. Wenn du als Antwort postest, kann ich das als korrekt markieren. – Octo

Antwort

3

In Python-Mengen haben keine bestimmten Reihenfolge, d. H. Die Implementierung ist frei, eine beliebige Reihenfolge zu wählen und daher könnte es für jeden Programmlauf unterschiedlich sein.

Sie wandeln hier auf einen Satz:

temp2 = list(set(temp)) 

das Ergebnis Bestellung sollten Sie konsequent geben (aber vielleicht nicht richtig) Ergebnisse:

temp2 = sorted(set(temp)) 

Meine Ergebnisse für array.

Sortiert:

temp2 = sorted(set(temp)) 

array sieht wie folgt aus:

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

Umgekehrt:

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

array wie folgt aussieht:

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