對於一個序列,Python提供內置函數Sorted進行排序。
1, 函數原型:
sorted(iterable, cmp=None, key=None, reverse=False)
參數:
iterable:需要進行排序的序列(list,tuple, set, map, string)等。
cmp:比較函數,一般為回調函數,默認的話,基礎類型按值比較,對象成員按照地址比較,返回值 0: 兩個數相等,1:第一個數大於第二個數,-1:第一個數小於第二個數。
key:用於比較的字段,一般為回調函數, 對於復雜的序列,設置用於比較的字段,返回值為比較的字段值。
reverse:是否翻轉,默認為從小到大的程序,如果設置成True,則排序為從大到小。
返回值:
返回排序后的一個新的列表(list),不管排序的是何種序列,返回的都將是一個list。
2,示例:
l = [2, 1, 3] t = (2, 1, 3) s = {2, 1, 3} m = {2: 'a', 1: 'b', 3: 'c'} s1 = '213' # 操作 # 輸出 print sorted(l) # [1, 2, 3] 等價 l.sort print sorted(t) # [1, 2, 3] print sorted(s) # [1, 2, 3] print sorted(s1) # ['1', '2', '3'] print sorted(m) # [1, 2, 3] # 從大到小排序 print sorted(l, reverse=True) # [3, 2, 1] # 自定義排序算法 l = [(3, 2, 1), (1, 2, 3), (2, 3, 1)] # 用第1個元素的第二個值和第二個元素的第一個值進行比較 def my_cmp(k1, k2): return 0 if k1[1] == k2[0] else 1 if k1[1] > k2[0] else -1 print sorted(l, cmp=my_cmp) # [(1, 2, 3), (3, 2, 1), (2, 3, 1)] # 用元素中最后一個值進行排序 print sorted(l, key=lambda x: x[2]) # [(3, 2, 1), (2, 3, 1), (1, 2, 3)] # 用元素前兩個值得和進行比較 print sorted(l, key=lambda x: x[0] + x[1]) # [(1, 2, 3), (3, 2, 1), (2, 3, 1)]