Python sort()和sorted()函数知识点
发布日期:2021-11-15 14:58:08 浏览次数:29 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python 创建r行c列的矩阵
下一篇:Python List删除操作之Remove,Pop和Del

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月05日 12时42分43秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章