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变为降序排序。