當前位置:編程學習大全網 - 腳本源碼 - sort、sorted排序技巧(多級排序)

sort、sorted排序技巧(多級排序)

Python list內置sort()方法用來排序,也可以用python內置的全局sorted()方法來對可叠代的序列排序生成新的序列。

示例:

1)排序基礎

簡單的升序排序是非常容易的。只需要調用sorted()方法。它返回壹個新的list,新的list的元素基於小於運算符( lt )來排序。

妳也可以使用list.sort()方法來排序,此時list本身將被修改。通常此方法不如sorted()方便,但是如果妳不需要保留原來的list,此方法將更有效。

另壹個不同就是list.sort()方法僅被定義在list中,相反地sorted()方法對所有的可叠代序列都有效。

2)key參數/函數

從python2.4開始,list.sort()和sorted()函數增加了key參數來指定壹個函數,此函數將在每個元素比較前被調用。 例如通過key指定的函數來忽略字符串的大小寫:

key參數的值為壹個函數,此函數只有壹個參數且返回壹個值用來進行比較。這個技術是快速的因為key指定的函數將準確地對每個元素調用。

更廣泛的使用情況是用復雜對象的某些值來對復雜對象的序列排序,例如:

同樣的技術對擁有命名屬性的復雜對象也適用,例如:

3)Operator 模塊函數(多級排序)

上面的key參數的使用非常廣泛,因此python提供了壹些方便的函數來使得訪問方法更加容易和快速。operator模塊有itemgetter,attrgetter,從2.6開始還增加了methodcaller方法。使用這些方法,上面的操作將變得更加簡潔和快速:

operator模塊還允許多級的排序,例如,先以grade,然後再以age來排序:

4)升序和降序

list.sort()和sorted()都接受壹個參數reverse(True or False)來表示降序或升序排序。

例如對上面的student降序排序如下:

5)排序的穩定性和復雜排序

從python2.2開始,排序被保證為穩定的。意思是說多個元素如果有相同的key,則排序前後他們的先後順序不變。

註意在排序後'blue'的順序被保持了,即'blue', 1在'blue', 2的前面。

更復雜地妳可以構建多個步驟來進行更復雜的排序,例如對student數據先以grade降序排列,然後再以age升序排列。

  • 上一篇:四年級人口普查手抄報
  • 下一篇:電影《分手大師》中妳明白了哪些道理?
  • copyright 2024編程學習大全網