2016-10-11 6 views
-1

Ich fand etwas seltsam und ich fragte mich, ob es eine bekannte Sache war. Dies ist mein Code: -Python 3.5.2-Set seltsames Sortierverhalten (Python)

numbers = [9,4,6,7,1] 
setlist = set() 
for item in numbers: 
    setlist.add(item) 
print(setlist) 
numbers = [9,4,6,7,1,5] 
setlist = set() 
for item in numbers: 
    setlist.add(item) 
print(setlist) 

Und das ist mein Ausgang (es ändert sich nie):

{9, 4, 1, 6, 7} {1, 4, 5, 6, 7, 9} Process finished with exit code 0

Wenn Sie es laufen wird Ihnen die erste Ausgabe sehen, dass ist nicht in Ordnung, aber die zweite ist. Es scheint nur aus irgendeinem Grund in Ordnung zu sein, wenn das Set mehr als 5 Objekte hat. Wiki.python.com sagt auch, dass die Sets nicht sortiert werden. Das alles ist wirklich komisch für mich, also hoffte ich, ich könnte mehr Erklärung bekommen.

+1

Weil 'set' ungeordnet ist. "Ein Set ist eine ungeordnete Sammlung ohne doppelte Elemente." aus [docs] (https://docs.python.org/3/tutorial/datastructures.html) –

Antwort

0

Sätze sind ungeordnete Sammlungen von Entwurf. Wenn Sie eine Sammlung von Elementen wünschen, die die Reihenfolge beibehalten, sollten Sie stattdessen eine Liste verwenden. Listen stehen Ihnen die Methoden insert und append zur Verfügung.

my_list = [] 
for item in some_iterable: 
    my_list.append(item) 
0

Es scheint, aus irgendeinem Grund, um nur bekommt, wenn die Menge mehr als 5 Objekte hat

Es gibt nichts zu erklären, wirklich, es ist eine zufällige Beobachtung. Fügen Sie mehr Sachen, und es wird nicht sortiert werden

numbers = [9,4,6,7,1,"a"] 
print(set(numbers)) # sorted 
print(set(numbers + [-1])) # not anymore 

Es gibt auch nichts Magisches 5, ausprobieren

print(set([1, 2, -2])) # not sorted either 

Wenn Dokumentation sagt, dass etwas nicht ist sortiert/bestellt (oder dass die die Bestellung ist nicht garantiert), das heißt nicht "für jeden einzelnen Input werden die Items nicht sortiert" sondern "man kann sich nicht darauf verlassen, dass die Dinge hier sortiert werden, es ist eine völlig zufällige Sache".