python3對於排序提供兩種內置方法,一是針對數組的list.sort(), 一是針對所有可迭代序列的sorted()。其中list.sort()是在原數組修改,不產生新對象,所以在使用函數后使用賦值語句得到的是None,原數組本身就是想要得到的序列或者將原數組賦值給新變量名得到想要的序列;sorted()產生新的對象。當不需要原始數組時,list.sort()更有效率。
一.list.sort(*, key=None, reverse=Fales),取消了python2中的關鍵字參數cmp。
1.默認直接比較列表中的元素降序;
2.有兩個可選的關鍵字參數,方法同sorted()。
二.sorted(iterable, *, key=None, reverse=False),取消了python2中的關鍵字參數cmp。
1.默認直接比較序列中的元素降序;
2. 有兩個可選的關鍵字參數。
key接收一個只有一個參數的函數用於指定比較對象,默認為None,即直接比較序列中的元素。key方法很快因為僅僅訪問輸入的數據一次。
對於數組中的一個是元組度對象,可通過key來決定按照元祖中哪個元素進行排序: 即按照某一主關鍵字值排序;
若排序出現關鍵字值相同的情況,可以通過元組進行次要關鍵字排序: 通過元組添加次要關鍵字排序。
關鍵字僅僅是值的訪問方式,也可通過屬性等其他方式:
因為上面三種方式是非常常用的,所以python提供更快更有效的方法,operator模塊的itemgetter()、attrgetter(),前一個接收下標, 后一個接收屬性。
reverse為布爾型,默認值為False,即升序排序,可以通過關鍵字參數將其值設為True變為降序排序。