当你想按自己的方式对数组元素进行排序时,我们需要自定义比较函数实现我们想实现的排序方式。
例1
以降序对数组进行排序
>>> def comp(x,y):
... return y-x
...
>>> a = [1,8,4,5,2,7]
>>> a.sort(comp)
>>> a
[8, 7, 5, 4, 2, 1]
例2
class Interval(object):
def __init__(self, s=0, e=0):
self.start = s
self.end = e
intervals = []
tmp = [[1,3],[15,18],[8,10],[2,6]]
for l in tmp:
t = Interval(l[0],l[1])
intervals.append(t)
def printInterval(inter):
print("[{}, {}]".format(inter.start,inter.end))
for l in intervals:
printInterval(l)
# [[1,3],[15,18],[8,10],[2,6]]
def comp(it1, it2):
return it1.start-it2.start
intervals.sort(comp)
for l in intervals:
printInterval(l)
# [[1,3],[2,6],[8,10],[15,18]]
以上方法皆是python2的实现。python3下实现有所不同(以上方法python3下跑不通),因为python3 sorted取消了对cmp的支持,即python3没有cmp函数。
例2的python