Python排序函数
Python,排序,函数
2025-04-01 16:27:59 时间
大家好,又见面了,我是你们的朋友全栈君。
Python中自带了两个排序函数sort和sorted,用法分别为:
sort函数用法
list.sort(cmp=None, key=None, reverse=False)
特点:对list原地排序(直接改变数组),无返回值。
参数:
- cmp——可选参数, 可用于自定义排序规则。
- key ——主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse——升序or降序,reverse = True 降序, reverse = False 升序(默认)。
sorted函数用法
sorted(iterable[, cmp[, key[, reverse]]])
特点:可以对所有可迭代的对象进行排序操作。返回的是一个新的 list,不修改原来的对象。
参数:
- iterable – 可迭代对象。
- cmp – 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
自定义排序规则
这里以sorted函数为例,自定义排序规则。
比如给定区间数组s = [[1,6],[2,3],[1,4],[3,5]],数组中的每个元素代表一个区间范围,希望的排序规则:根据区间起始点的大小进行排序,起始点小的排在前面,起始点如果相同,则终止点小的排在前面。
- 自定义compare函数,compare函数需要传两个参数a和b(a和b每次都是从可迭代对象里面取的,这个咱们不管),这个compare函数需要有三个返回值{-1, 0, 1},当a<b时,返回值为-1,a=b时,返回值为0,a>b时,返回值为1.
- python3中的sorted()函数去除了cmp参数,推荐使用key。functools.cmp_to_key() 将 compare函数 转化为 key。
import functools
def compare(a, b):
if a[0] != b[0]:
return -1 if a[0] < b[0] else 1
else:
if a[1] < b[1]:
return -1
elif a[1] > b[1]:
return 1
else:
return 0
s = [[1,6],[2,3],[1,4],[3,5]]
s = sorted(s, key=functools.cmp_to_key(compare))
print(s) # [[1, 4], [1, 6], [2, 3], [3, 5]]
#使用sort函数也是一样的用法
# s.sort(key=functools.cmp_to_key(compare))
# print(s) # [[1, 4], [1, 6], [2, 3], [3, 5]]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149800.html原文链接:https://javaforall.cn
相关文章
- Python基础15-日志模块logging
- 2022春节贺岁档电影开分,水门桥不理想,四海崩了!用Python一探究竟
- Python-基础01-变量
- Python基础10-函数的递归
- Python概述
- Python实现商场管理系统
- python识别文字位置_如何利用Python识别图片中的文字
- python操作excel
- 使用python的pyecharts库绘制数据可视化大屏
- Python中的groupby分组
- python小知识点-exec的local
- Python一键生成国庆渐变头像
- python 访问LDAP服务器「建议收藏」
- 【Python矩阵转置】| 试使用多方法实现[通俗易懂]
- Python-方法反射
- 知乎高赞!有没有适合新手练习 Python 的做题类网站?
- Python <算法思想集结>之抽丝剥茧聊动态规划
- Python进阶41-drf框架(三)
- Android 平台的Python——基础篇(一)
- Python || 皖事通安康码截图信息简易识别采集