sorted
上一篇学习了argsort
接着学习sorted
我记得<python编程从入门到实践>这本书里,在一起介绍了sort, sorted,在对list进行排序时,两者都可以用,但是sort是把原有list改变了,无返回值,而sorted是返回一个排序后的list,不会改变原来的list。但是其实两者之间不只是这点区别,或者说sorted的强大处可不是这些,sort是在list上用,而sorted是可迭代对象都可以的,还记得fluent python中专门针对sorted讲了一节课。
默认sorted返回的是你要排序的对象的排序结果,可以升序排序(默认),也可以降序即从大到小排序。
1 2 3 4 5 | a = [ 1 , 3 , 6 , 5 , 2 , 7 , 9 ] print ( 'a:' , a) print ( 'sorted a:' , sorted (a)) print ( 'a:' ,a) print ( 'sored a from max to min:' , sorted (a, reverse = True ))<br> |
默认是从小到大排序,通过reverse=True将排序转变为从大到小排序。而且是稳定排序,一般使用的是mergesort排序。
那么如果我想得到排序的索引号呢?sorted给我们提供了key这个参数可以用。
如果我们想返回排序后的序号,可以利用key进行完成。
1 2 3 4 5 6 7 8 | a = [ 1 , 3 , 6 , 5 , 2 , 7 , 9 ] print ( 'a:' , a) print ( 'sorted a:' , sorted (a)) print ( 'a:' ,a) print ( 'sored a from max to min:' , sorted (a, reverse = True )) sorted_id = sorted ( range ( len (a)), key = lambda k: a[k], reverse = True ) print ( '元素索引序列:' , sorted_id) |
以下来自官方
https://docs.python.org/zh-cn/3/library/functions.html#sorted
sorted(iterable, /, *, key=None, reverse=False)
根据 iterable 中的项返回一个新的已排序列表。
具有两个可选参数,它们都必须指定为关键字参数。
key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower
)。 默认值为 None
(直接比较元素)。
reverse 为一个布尔值。 如果设为 True
,则每个列表元素将按反向顺序比较进行排序。
使用 functools.cmp_to_key()
可将老式的 cmp 函数转换为 key 函数。
内置的 sorted()
确保是稳定的。 如果一个排序确保不会改变比较结果相等的元素的相对顺序就称其为稳定的 --- 这有利于进行多重排序(例如先按部门、再按薪级排序)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2015-08-03 mark