2016-10-11 76 views
-1

我發現了一些奇怪的東西,我想知道它是否是已知的東西。 這是我的代碼:-python 3.5.2-設置奇怪的排序行爲(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) 

這是我的輸出(它從不改變):

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

如果你運行它,你會看到,第一輸出不合適,但第二個是。它似乎只是因爲某些原因而獲得,如果該集合有超過5個對象。 Wiki.python.com也說這些集合不會在al中排序。這對我來說真的很奇怪,所以我希望我能得到更多的解釋。

+1

因爲'set'是無序的。 「一組是沒有重複元素的無序集合。」來自[docs](https://docs.python.org/3/tutorial/datastructures.html) –

回答

0

集合是按設計的無序集合。如果您想要保留訂單的項目集合,請考慮使用列表。列表有insertappend方法可供您使用。

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

這似乎僅僅是爲了得到某種原因,如果設定有更多然後5個對象

沒有什麼真正的解釋,它是隨機觀察。追加更多的東西,也不會進行排序

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

還有什麼魔力5,嘗試

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

當文檔中說,一些分類/訂購(或者說,排序不保證),但這並不意味着「對於每一個輸入,項目都不會被排序」,而是「你不能依賴於在這裏排序的東西,這是一個完全隨機的東西」。