首页 > 数据库技术 > 详细

python关于sorted里面key,reverse以及lamdba,operator这几个鸟人

时间:2019-03-11 20:28:49      阅读:192      评论:0      收藏:0      [点我收藏+]
 关于sorted:
 
help里给的解释
>>> help(sorted)
Help on built-in function sorted in module __builtin__:

sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
 
一般,sorted 对字符串排序,ASCII比较大小的时候,是比较两个数中的第一个字符
ASCII码的大小规则,0-9<A-Z<a-z:  
由于‘Z‘ < ‘a‘,结果,大写字母Z会排在小写字母a的前面
忽略大小写来比较两个字符串,实际上就是先把字符串都变成大写(或者都变成小写),再比较。
这样,我们给sorted传入key函数,即可实现忽略大小写的排序:
#Python lower() 方法转换字符串中所有大写字符为小写
#这一步把大写变小写,再sorted
>>> sorted([bob, about, Zoo, Credit], key=str.lower)
[
about, bob, Credit, Zoo]

 

Make a Test:
 from operator import itemgetter 
students
= [(Bob, 75), (Adam, 92), (Bart, 66), (Lisa, 88)] print(sorted(students,key=itemgetter(0)))#key值设置成第一个域来排序 print(sorted(students, key=lambda t: t[1]))#key值设置称t[1],第二个域来排序 print(sorted(students, key=lambda t: t[0],reverse=True))#key值设置成t[0],第一个域来排序,注意这有个反转,反转就是把顺序倒过来
  print(sorted(students, key=itemgetter(1), reverse=True))

输出结果:

>>>[(Adam, 92), (Bart, 66), (Bob, 75), (Lisa, 88)] 
>>>[(Bart, 66), (Bob, 75), (Lisa, 88), (Adam, 92)]
>>>[(Lisa, 88), (Bob, 75), (Bart, 66), (Adam, 92)]
>>>[(Adam, 92), (Lisa, 88), (Bob, 75), (Bart, 66)]
>>> help(sorted)
Help on built-in function sorted in module __builtin__:

sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
 
 
其中key的参数为一个函数或者lambda函数,如下例子对lamdba的解释,我对lamdba的理解就是这东西是自定义函数
>>> r=lambda x,y:x*y   #实现x*y,
>>> r(2,3)
6

 

itemgetter是从operator里面倒进来的,可以用来当key的参数
如果要比较一个班学生的成绩,但是同时有B同学,一个人得12分,一个人10分,那就来上两个域进行排序。
如下:
根据第二个域和第三个域进行排序
#key值设置成第一个域来排序
a = [(john, A, 15), (jane, B, 12), (dave, B, 10)]
print sorted(a, key=itemgetter(1,2))
>>>[(john, A, 15), (dave, B, 10), (jane, B, 12)]
但是姓名没有排序,所以给第一个域来一波操作
 print  sorted(a, key=itemgetter(0,1,2))
>>>[(‘dave‘, ‘B‘, 10), (‘jane‘, ‘B‘, 12), (‘john‘, ‘A‘, 15)]

 

 

python关于sorted里面key,reverse以及lamdba,operator这几个鸟人

原文:https://www.cnblogs.com/Harryzhou/p/10512878.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!