list的一个方法,具有三个参数:cmp,key,reverse(Python3只有后两个)
一个list调用sort方法后,对该list进行排序,不保存原list
参数解释:
调用方法:
在Python2版本中,存在cmp参数,可以自定义比较函数,如:
在Python3中,cmp参数与内置函数cmp()被一并移除,自定义比较函数通过key=func来实现(其实是通过key来定义每一个元素的关键字编码值)。这是因为Python3中不同类型间的比较不再依赖于固定跨类型排序,对不同类型的元素进行排序,首先要将不同类型元素转换为相同类型的编码值,然后才能进行升降排序。
比如一个列表中有不同类型的元素:
由于事先定义了固定的顺序,在Python2中,对含有不同类型元素的List调用sort方法是允许的。
而在Python3中就会引发一个异常:
我们只能把不同元素的关键字编码值设为一致,例如字典序。
Python的一个内置函数,使用方法与list.sort()大体一致,不同在于两个地方:
基于以上两点,sorted使用频率比list.sort()更高些,所以Python中更高级的排序技巧便通过sorted()来演示。
函数原型:
sorted(iterable, key=None, reverse=False) –> new sorted list
list与tuple排序方法与list.sort()大体一致,只不过sorted()不改变原结构:
先引一些资料
由于 key 参数比较常用,所以 Python 内置了一些用来简单、快速生成相关函数的方法, operator 模块提供了 itemgetter,attrgetter, 以及从 Python 2.6 开始提供的 methodcaller 函数。