Python 序列排序(Sorted)


 對於一個序列,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)]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM