当前位置 : 主页 > 编程语言 > python >

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战

来源:互联网 收集:自由互联 发布时间:2022-06-18
大家好,我是Python进阶者。 一、前言 前几天在Python钻石交流群有个叫【emerson】的粉丝问了一个Python排序的问题,这里拿出来给大家分享下,一起学习下。 其实这里【瑜亮老师】、【布

大家好,我是Python进阶者。

一、前言

前几天在Python钻石交流群有个叫【emerson】的粉丝问了一个Python排序的问题,这里拿出来给大家分享下,一起学习下。

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_python

其实这里【瑜亮老师】、【布达佩斯的永恒】等人讲了很多,只不过对于基础不太好的小伙伴们来说,还是有点难的。不过在实际应用中内置函数​​sorted()​​用的还是蛮多的,这里也单独拿出来讲一下,希望下次再有小伙伴遇到的时候,可以不慌。

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_Python基础_02

二、基础用法

内置函数​​sorted()​​可以用来做排序,基础的用法很简单,看个例子,如下所示。

lst = [3, 28, 18, 29, 2, 5, 88]
result = sorted(lst)
print(result)

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_Python基础_03

程序运行之后,可以看到列表从小到大进行升序排序了。

如果想让它倒序排序的话,也很简单,加个​​reverse​​参数即可。

lst = [3, 28, 18, 29, 2, 5, 88]
result = sorted(lst, reverse=True)
print(result)

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_python_04

三、高级用法

上面我们遇到的列表(迭代器)是很简单的数字类型,如果遇到比较复杂的迭代器,然后需要对其进行排序的话,如下面这个例子,如下:

lst = [
{"id": 1, "name": "鲁班", "age": 18},
{"id": 2, "name": "鲁班大师", "age": 26},
{"id": 3, "name": "鲁大师", "age": 23},
{"id": 4, "name": "狄仁杰", "age": 48}
]
# 按照年龄,对英雄进行排序,升序

针对类似这样的迭代器或者可迭代的对象,对其进行排序的话,就需要使用自定义的方法对其进行排序了。这个也都可以使用内置函数​​sorted()​​来进行,关于​​sorted()​​的用法如下所示。

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_Python入门_05

它一共有三个参数,第一个参数是可迭代对象,如列表、字典、集合等等;第二个参数是指排序规则(排序函数),在​​sorted()​​内部会将可迭代对象中的每一个元素传递给这个函数的参数,根据函数运行的结果进行排序;第三个参数是​​reverse​​,如果是​​True​​表示倒序,如果是​​False​​则表示正序。

那么针对该题目,可以使用下面的代码进行排序:

sorted(lst, key=lambda x: x.get('age'))

其中这个​​key​​就是自己自定义的一个匿名函数,用于指定排序规则,这里的话就是取字典中的​​age​​,然后根据​​age​​的大小去进行排序,所以得到的结果如下图所示。

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_python_06

如果想取出年龄大于28的英雄,该怎么做?

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_迭代_07

这里引申了下,也是可以使用内置函数来做,只不过这个地方用到的内置函数是​​filter()​​了,代码如下所示:

list(filter(lambda x: x['age'] >= 28, lst))

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_python_08

番外篇

最近又有很多小伙伴们在问Python深浅拷贝的知识点,这里昨天整理了一份资料,这里分享给大家,面试题的时候经常会被问到,共勉。

# yyds干货盘点 # 盘点Python内置函数sorted()高级用法实战_python_09

三、总结

大家好,我是Python进阶者。这篇文章主要分享了Python的内置函数​​sorted()​​排序问题,针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。

最后感谢粉丝【emerson】提问,感谢【德善堂小儿推拿-瑜亮老师】、【布达佩斯的永恒】给出的具体解析和代码演示,感谢【dcpeng】、【冯诚】等人参与学习交流。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何Python问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

网友评论