
Python sort()和sorted()函数知识点
发布日期:2021-11-15 14:58:08
浏览次数:19
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2023年06月07日 20时05分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
单片机与gsm通信c语言,gsm模块如何与单片机通信?
2019-08-28 15:52:24
dsp课程设计c语言源码,DSP课程设计-基于C语言实现256点的FFT精选.pdf
2019-08-28 15:52:23
单片机c语言6种开方,单片机快速开平方的算法
2019-08-28 15:52:23
随机数生成器c语言,句子随机生成器-怎么用C语言生成随机数
2019-08-28 15:52:23
c语言编程代码对父母感恩,c语言中编程:每个做父母的都关心自己孩子成人后孩子的生高:...
2019-08-28 15:52:22
c语言结构体定义字符串数组,C语言,结构体中字符串的声明(采用字符指针还是字符数组)...
2019-08-28 15:52:22
c语言系统时间的作用,C语言得到当前系统时间
2019-08-28 15:52:22
Linux下python包放在哪,在alpinlinux中使用apk安装的Python包
2019-08-28 15:52:21
linux系统怎么安装pr,Linux安装后的配置
2019-08-28 15:52:21
linux开启防火墙ping,如何在防火墙中放开ping
2019-08-28 15:52:20
linux下检测硬盘,【转载】linux下硬盘监控诊断工具SmartTools
2019-08-28 15:52:20
linux c read函数返回值,Linuxc - GNU Readline 库及编程简介
2019-08-28 15:52:19
linux安装i219网卡驱动下载,华硕E500 G5 (-INTEL I210 / I219-LM)网卡驱动12.17.10.7版下载,适用于Win10-64-驱动精灵...
2019-08-28 15:52:19
pae扩展内存 linux,浅析linux内核内存管理之PAE
2019-08-28 15:52:18
linux 端口方法防火墙,Linux 打开端口方法(防火墙操作)
2019-08-28 15:52:18
linux中echo命令不输出换行,shell脚本echo输出不换行功能增强实例
2019-08-28 15:52:17
linux将屏幕输出到文件,Linux命令执行的屏幕输出内容重定向到日志文件
2019-08-28 15:52:17
matlab支持 编程语言,用于数学的10个优秀编程语言
2019-08-28 15:52:16
oracle启动报错ora11157,ora-01410錯誤﹐在線等待﹗
2019-08-28 15:52:16
电力系统潮流计算matlab程序,大神们,求个电力系统潮流计算的matlab程序。
2019-08-28 15:52:15