2016-07-14 59 views
0

我是一名Python初學者,我使用的是Python 2.4.3。對Python(2.4.3)中set()的輸出感到困惑

我對set()函數產生的順序有疑問。

我明白set()會從一個字符串中刪除的重複的元素和

[類組([迭代])

返回一組新的對象時,可任選地由可迭代獲得的元素。] 1

但是例如,當我做了以下

a='abcdabcd' 
set(a) 

它的

set(['a','b','c','d']) 

代替我實際上希望返回的

set(['a','c','b','d']) 

結果。

這是爲什麼?我無法理解輸出是如何產生的。

非常感謝提前。

+1

*集合 - 獨特元素的無序集合* –

+3

爲什麼你在使用2.4.3? –

+0

也可能有關:http://stackoverflow.com/q/12165200/748858 – mgilson

回答

0

A set被定義爲「唯一元素的無序集合」(參見here)。 Python中的設置對象不能保證排序,並且您不應該期望也不依賴於順序保持不變。

+1

我認爲這是最正確的,但它確實對訂單做出了一個(有時是有用的)保證 - 具體地說,對同一套的多次迭代將產生相同訂單中的物品,前提是您沒有添加或刪除任何物品。 – mgilson