list.sort 方法会就地排序列表,也就是说不会把原列表复制一份。这也是这个方法的 返回值是 None 的原因,提醒你本方法不会新建一个列表。在这种情况下返回 None 其实 是 Python 的一个惯例:如果一个函数或者方法对对象进行的是就地改动,那它就应该返 回 None,好让调用者知道传入的参数发生了变动,而且并未产生新的对象。例 如,random.shuffle 函数也遵守了这个惯例。
与 list.sort 相反的是内置函数 sorted,它会新建一个列表作为返回值。这个方法可以接受任何形式的可迭代对象作为参数,甚至包括不可变序列或生成器。而不管 sorted 接受的是怎样的参数,它最后都会返回一个列表。
不管是 list.sort 方法还是 sorted 函数,都有两个可选的关键字参数。
reverse: 如果被设定为 True,被排序的序列里的元素会以降序输出(也就是说把最大值当作 最小值来排序)。这个参数的默认值是 False。
key: 一个只有一个参数的函数,这个函数会被用在序列里的每一个元素上,所产生的结果 将是排序算法依赖的对比关键字。比如说,在对一些字符串排序时,可以用 key=str.lower 来实现忽略大小写的排序,或者是用 key=len 进行基于字符串长度的排 序。这个参数的默认值是恒等函数(identity function),也就是默认用元素自己的值来排 序。