Python3中sorted函数key参数与reverse参数的深度解析
本文详细解析Python3中sorted函数的key和reverse参数用法。通过实例演示如何利用key提取比较关键字,实现复杂排序逻辑,如元组排序、字符串自定义排序及正负数混合排序,并说明Python3已取消cmp支持。
Python3 sorted函数基础参数说明
在Python3版本中,sorted函数不再支持cmp参数。
查阅Python3官方帮助文档可知:
sorted(iterable,key=None,reverse=False)
key参数接收一个函数,该函数仅接受一个元素作为输入,默认值为None。
reverse参数为布尔类型,若设为True,列表元素将按逆序排列,默认值为False。
key参数工作原理详解
重点解析key参数的工作原理:
key用于指定一个单参数函数,该函数从每个元素中提取用于比较的关键字,默认值为None。
sorted函数应用实例
示例1:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave','B', 10)]
sorted(students,key=lambda s: x[2]) #按照年龄来排序
输出结果:[('dave','B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
示例2:这是一个字符串排序案例,排序规则为:小写字母 < 大写字母 < 奇数 < 偶数。
s = 'asdf234GDSdsf23' #排序:小写-大写-奇数-偶数
print("".join(sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x))))
其原理是:先比较元组的第一个值,False小于True;若相等则比较元组的下一个值,依此类推。
首先观察布尔值的排序行为:
print(sorted([True,Flase])) 的输出结果为 [False,True]。
布尔值排序时,False会排在True之前。
x.isdigit()的作用是将数字字符排在字母字符之前。
x.isdigit() and int(x) % 2 == 0的作用是确保奇数排在偶数之前。
x.isupper()的作用是在前述基础上,保证小写字母排在大写字母之前。
最后的x表示在上述条件基础上,对各类别内的数字或字母进行自然排序。
最终输出结果为:addffssDGS33224
复杂排序场景实战
示例3:这是一道常见的面试题。
list1=[7, -8, 5, 4, 0, -2, -5]
#要求1.正数在前负数在后 2.整数从小到大 3.负数从大到小
sorted(list1,key=lambda x:(x<0,abs(x)))
解题思路:首先按正负性排序(正数在前,负数在后),然后按数值大小排序。
以上关于Python3 sort和sorted函数的应用详解内容到此结束,希望能为读者提供参考,并欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













