Python中sort函数正则表达式的使用

 更新时间:2024年03月13日 09:54:35   作者:Alan_Lowe  
在python中,sort是列表排序的一种方法,本文就来介绍一下sort函数正则表达式的使用以及与sorted的区别,具有一定的参考价值,感兴趣的可以了解一下

最近老是遇到使用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]]

与sorted的区别

sorted() 函数是Python中的内置函数

sorted 可以对所有可迭代的对象进行排序操作,尤其是可以对字典进行排序。sorted() 函数将重新排序 iterable 参数中的元素,并将结果返回一个新的列表(对原列表的顺序不会产生影响)。

语法格式为:sorted(iterable, key=None, reverse=False)。

  • iterable:指定一个待排序的可迭代对象。
  • key:指定一个只有单个参数的函数,用于从 iterable
    参数的每个元素中提取用于比较的有效关键值(比如可以用 key = str.lower 来实现忽略大小写的排序;或者用 key = len
    进行基于字符串长度的排序)
  • reverse:该参数是一个布尔类型值,如果设置为 True,则将结果反向排序,默认值是 False。

例子演示:1、对列表进行排序

num = [1,5,3,2,8,4,0]
print(sorted(num))

结果:

[0, 1, 2, 3, 4, 5, 8]

2、对元祖进行排序

num2 = (3,2,7,4,0,1,1)
print(sorted(num2))

结果:

[0, 1, 1, 2, 3, 4, 7]

3、对字典进行排序

对于字典而言,默认对keys进行排序

num3 = {"Houmin":18, "Chen":22, "Wang":12}
print(sorted(num3))  # 对于字典而言,默认对keys进行排序
print(sorted(num3.items())) # 根据items进行排序,以列表形式返回键值对
print(sorted(num3.values())) # 对字典中的值进行排序,返回列表形式

结果:

['Chen', 'Houmin', 'Wang']
[('Chen', 22), ('Houmin', 18), ('Wang', 12)]
[12, 18, 22]

根据年龄从大到小进行排序

num3 = {"Houmin":18, "Chen":22, "Wang":12}
print(sorted(num3.items(),key=lambda x:x[1]))
print(sorted(num3.items(), key=lambda x:x[-1]))

结果:

[('Wang', 12), ('Houmin', 18), ('Chen', 22)]
[('Wang', 12), ('Houmin', 18), ('Chen', 22)]

根据年龄从大到小进行排序

print(sorted(num3.items(), key=lambda x:x[1], reverse=True))

结果:

[('Chen', 22), ('Houmin', 18), ('Wang', 12)]

到此这篇关于Python中sort函数正则表达式的使用的文章就介绍到这了,更多相关Python sort正则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python3使用SMTP发送HTML格式邮件

    python3使用SMTP发送HTML格式邮件

    这篇文章主要为大家详细介绍了python3使用SMTP发送HTML格式的邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 修改Pandas的行或列的名字(重命名)

    修改Pandas的行或列的名字(重命名)

    这篇文章主要介绍了修改Pandas的行或列的名字(重命名),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python+Pyecharts实现散点图的绘制

    Python+Pyecharts实现散点图的绘制

    散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。本文将利用Python Pyecharts实现散点图的绘制,需要的可以参考一下
    2022-06-06
  • python3 破解 geetest(极验)的滑块验证码功能

    python3 破解 geetest(极验)的滑块验证码功能

    这篇文章主要介绍了python3 破解 geetest(极验)的滑块验证码功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Anaconda环境GDAL库基于whl文件的配置方法

    Anaconda环境GDAL库基于whl文件的配置方法

    这篇文章主要介绍了Anaconda环境GDAL库基于whl文件的配置方法,我们介绍了基于conda install命令直接联网安装GDAL库的方法,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • python中的迭代器,生成器与装饰器详解

    python中的迭代器,生成器与装饰器详解

    大家好,本篇文章主要讲的是python中的迭代器,生成器与装饰器详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • 关于Pycharm配置翻译插件Translation报错更新TTK失败不能使用的问题

    关于Pycharm配置翻译插件Translation报错更新TTK失败不能使用的问题

    这篇文章主要介绍了关于Pycharm配置翻译插件Translation报错更新TTK失败不能使用的问题,本文通过图文并茂的形式给大家分享解决方案,需要的朋友可以参考下
    2022-04-04
  • Python中dtype、type()和astype()的区别详解

    Python中dtype、type()和astype()的区别详解

    这篇文章主要介绍了Python中dtype、type()和astype()的区别详解,type()是python内置的函数,type()返回数据结构类型(list、dict、numpy.ndarray 等),需要的朋友可以参考下
    2023-08-08
  • Python操作Elasticsearch处理timeout超时

    Python操作Elasticsearch处理timeout超时

    这篇文章主要介绍了Python操作Elasticsearch处理timeout超时,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Django中密码的加密、验密、解密操作

    Django中密码的加密、验密、解密操作

    这篇文章主要介绍了Django中密码的加密、验密、解密操作,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12

最新评论