2017-08-25 131 views
-4

任何人都可以請向我解釋爲什麼從一個排序列表中導出一個不排序的集合?當對一個排序列表進行排序時,輸出集合不排序

list.sort()應該按照原樣對列表進行排序。 set(list)應該返回列表的唯一值,就像它一樣。

但爲什麼結果集不能排序?我是否需要創建一個集合,將其重新轉換爲list2,然後對list2進行排序?

(使用Python 2.7.6)

代碼:

def longest(s1, s2): 
    list = [] 
    s = s1 + s2 
    for letter in s: 
     list.append(letter) 
    print list 
    list.sort() 
    print list 
    unique = set(list) 
    print unique 
    s4 = "" 
    for item in unique: 
     s4 = s4 + item 
    print s4 
    return s4 

控制檯輸出:

['a', 'r', 'e', 't', 'h', 'e', 'y', 'h', 'e', 'r', 'e', 'y', 'e', 's', 't', 'h', 'e', 'y', 'a', 'r', 'e', 'h', 'e', 'r', 'e'] 
['a', 'a', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'h', 'h', 'h', 'h', 'r', 'r', 'r', 'r', 's', 't', 't', 'y', 'y', 'y'] 
set(['a', 'e', 'h', 's', 'r', 't', 'y']) 
aehsrty 
+1

設置的是沒有順序的,所以爲什麼要實施返回它們排序的功能?如果你想要一個有序集合,使用'sorted(set(x))',如下所述:https://stackoverflow.com/questions/15181867/understanding-the-set-function –

+2

集合按照定義是無序的 –

回答

0

集是通過性質,無序的數據結構。對於Python 2.7,集合不一定會保持順序,但在Python 3.x中,順序應該保持不變。

0

僅設置可確保其具有唯一的元素,並且不會默認進行排序。

你需要使用排序(集(列表))

+0

謝謝,修正它從手機打字。 – JRG

相關問題