原地排序的x.sort(),和不改变原列表有返回值的sorted(x)
自定义排序函数
先不关心其实原地排序还是有返回值的排序,研究其内部的排序原理,其内部是根据什么排序的呢,默认的排序方法是内建的cmp函数
对于cmp(x,y):
如果想要x排在y前面那么返回一个负数,如果想x排在y后面那么返回一个正数
根据这个原理我们可以自定义一些排序函数compares,并将这个函数传入sort或sorted方法中。
在python2中,用关键字cmp直接传入即可,
a = [1,2,4,3,5]
def compare_personal:
pass
a.sort(cmp=compare_personal)
sorted(a,cmp=compare_personal)
而在python3中,cmp关键字被移除了,这样的写法就无法运行了,需要借助functools包来完成
a = [1,2,4,3,5]
def compare_personal(x,y):
pass
a.sort(key= functools.cmp_to_key(compare_personal))
c = sorted(b, key=functools.cmp_to_key(compare_personal))