Python sort()和sorted()函数知识点
发布日期:2021-11-15 14:58:08
浏览次数:31
分类:技术文章
本文共 2124 字,大约阅读时间需要 7 分钟。
前沿
最近刷题发现用到排序函数的频率太高了,每次遇到一些不懂得知识点就各种查,所以现在索性做一个总结,以防将来忘记。
一、两个函数的区别
1.sort()
是列表的内置函数,他会直接对列表进行排序,不返回任何值。 list.sort(key=None,reverse=True/False)2.sorted()
并不修改列表内部值,而是直接返回已经排序好的对象。sorted(iterable,key=None,reverse=True/False) iterable:可迭代类型数据。如列表,元组,字典,字符串等 返回的对象都是列表类型的二、参数key,reverse
因为sort()与sorted()函数中key和reverse的功能一样,所以在一起讲述,并且在下面的例子中用sort()来表示
1.reverse 默认我们使用sort()即不加任何参数时,表示递增。reverse默认为False,当将reverse=True时,则列表按照递减排序,如>>>a=[1,4,5,2,6,3]>>>a.sort(reverse=True)>>>a[6,5,4,3,2,1]
2.key
此处接受函数的返回值,并且函数只能有一个形参,如>>> a=[[3,9],[1,8],[2,3]]>>> def cmp(x): #这里的x是随意命名的... #return x[1] 表示对元素的第二个字段排序,x[0]表示第一个字段... return (x[0],-x[1]) #表示先按照第一个字段排序,若相等,则按照第二个字段逆序排>>> a.sort(key=cmp)>>> a[[2, 3], [1, 8], [3, 9]]
这里也可以使用landa函数简写,如
>>> a=[[3,9],[1,8],[2,3]]>>> a.sort(key=lambda x:x[1])>>> a[[2, 3], [1, 8], [3, 9]]
三、Sorted()对字符串、元组即字典排序
1.字符串排序
>>> str="akvbavkda">>> sorted(str) #按照ASCII排序,默认是升序['a', 'a', 'a', 'b', 'd', 'k', 'k', 'v', 'v']
2.元组排序
>>> t=(4,2,1)>>> sorted(t)[1, 2, 4]#注意 元组内部的元素必须是相同类型的,非则会报错>>> t=(4,2,1,"abd")>>> sorted(t)Traceback (most recent call last): File "", line 1, in TypeError: '<' not supported between instances of 'str' and 'int'
3.字典排序
构建一个字典 math 其中key存姓名,value存分数
>>> math={ "abc":85,"acb":82,"apple":90,"banana":20}
根据字典Key值排序 (姓名)
#只输出key值的排序>>> sorted(math) #字典默认按照key值排序['abc', 'acb', 'apple', 'banana']>>> sorted(math.keys()) ['abc', 'acb', 'apple', 'banana']#输出整个字典(包括value>>> sorted(math.items())[('abc', 85), ('acb', 82), ('apple', 90), ('banana', 20)]>>> sorted(math.items(),key=lambda x:x[0])[('abc', 85), ('acb', 82), ('apple', 90), ('banana', 20)]
根据字典Value值排序 (分数)
#只输出value值的排序>>> sorted(math.values()) [20, 82, 85, 90]#*********注意***********#不能使用如下语句,可以发现他仍然是对key排序,此处传入#的x仍然是key值,x[i]表示传入这个字符串的第二个元素#"banana"的第二个元素就是'a'>>> sorted(math,key=lambda x:x[1])['banana', 'abc', 'acb', 'apple']#输出整个字典(包括value>>> sorted(math.items(),key=lambda x:x[1])[('banana', 20), ('acb', 82), ('abc', 85), ('apple', 90)]
参考文献
[1].https://blog.csdn.net/gymaisyl/article/details/83039279
[2].https://blog.csdn.net/robinson_/article/details/51484147转载地址:https://blog.csdn.net/qq_39751320/article/details/104313489 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月20日 20时27分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux mysql 命令 大全
2021-06-30
清除Squid缓存的小工具
2021-06-30
Varnish Cache 3.0.0安装
2021-06-30
深入探讨Varnish缓存命中率
2021-06-30
Linux下文件如果没有权限不能被Apache访问
2021-06-30
Linux内核学习四库全书
2021-06-30
Linux内核模块编程入门
2021-06-30
使用Cacti监控你的网络Cacti的安装
2021-06-30
2011年6月编程语言关注度排行
2021-06-30
Varnish使用小结
2021-06-30
千万级并发HAproxy均衡负载系统介绍
2021-06-30
什么是A记录、MX记录、CNAME记录
2019-04-27
MongoDB简介
2019-04-27
Varnish purges 缓存清除
2019-04-27
Linux下redis安装部署
2019-04-27
水平切分与垂直切分
2019-04-27
MySQL引擎
2019-04-27
MySQL下的NoSQL解决方案HandlerSocket
2019-04-27
Apache服务器下使用 ab 命令进行压力测试
2019-04-27