Python【sort函数正则表达式】

发布于:2024-03-13 ⋅ 阅读:(64) ⋅ 点赞:(0)

Python【sort函数正则表达式】


最近老是遇到使用python的sort函数时忘记怎么写排序规则的情况,这里好好整理一下。

1.sort函数最简单的用法

最简单的就是利用sort函数对一维列表进行排序:

l = [99, 55, 66, 10, 80]

l.sort()

print(l)

输出:

[10, 55, 66, 80, 99]

2.sort函数reverse

如果需要降序排序,那么可以给sort函数的reverse设置成True:

l = [99, 55, 66, 10, 80]

l.sort(reverse=True)

print(l)

输出:

[99, 80, 66, 55, 10]

3.自定义比较函数

如果列表当中的每一个元素都是一个列表,即算法竞赛当中经常遇到的二维数组这种情况,那么上面两种写法就都不适用了。熟悉C++的都知道,在C++中可以自定义一个cmp函数来指定自己的排序规则,那么在python当中也可以这样:

l = [[2,1], [1,3],[3,0]]

def cmp(x):
    # 这里表示按照每个元素的第0个元素来排序
    return x[0]

l.sort(key=cmp)

print(l)

输出:

[[1, 3], [2, 1], [3, 0]]

4.自定义比较函数plus

如果比较的规则更复杂,比如优先按照第0个元素进行比较,然后按照第1个元素比较,这种情况只需要在cmp函数当中返回一个元组就可以了:

l = [[2,1,1], [2,0,3],[1,2,0],[3,-10,-10]]

def cmp(x):
    # 这里表示先按照第0个元素,再按照第一个元素
    return (x[0],x[1])

l.sort(key=cmp)

print(l)

输出:

[[1, 2, 0], [2, 0, 3], [2, 1, 1], [3, -10, -10]]

5.正则表达式

可以看到排序规则写起来有点麻烦,还需要重新写一个排序函数,如果有多个数组需要这样排序,可能还会写多个排序规则。在python中还可以用正则表达式来写排序规则:

l = [[2,1,1], [2,0,3],[1,2,0],[3,-10,-10]]

l.sort(key = lambda x : (x[0], x[1]))

print(l)

输出:

[[1, 2, 0], [2, 0, 3], [2, 1, 1], [3, -10, -10]]
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到