Python(八)用sorted排序

说起排序,前面应该有大概说道list.sort () , 这是一个成员函数,

而sorted是一个迭代器,

前者是在原有序列基础上排序, 而后者是生成一个新的序列;

并且sorted可以接受一个key来重新定义函数的排序规则(就是cmp)

比如官方给出的例子,对一句话进行去空格排序,

sorted("This is a test string from Andrew".split(), key=str.lower) #输入
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']  #结果


再者 ,如果对一个tuple排序该如何呢 ; 先来解释一下tuple;

students_tuple = [ ('jack'  , 15 ) , ('nick' , 20 ) ] 

就如同C语言中的结构体一样, 所以他们的cmp书写也显得大同小异了; 

struct node //*C语言表达方式
{
    int age ;
    char name ; 
}a[500]

对他构造cmp的时候, 

bool cmp (node a , node b)
{
    retyurn a.age < b.age ; 
}

而在python3中,

def by_name(t):
    return t[0].lower()
L=[('Dob',75),('Adam',92),('Bart',66),('Cisa',88)]
L1 = sorted(L,key=by_name)
print(L1)

t[0] 就指的是 对名字排序 , 则t[1] 其实就是对年龄排序;

def by_scort(t):
    return t[1]
L=[('Bob',75),('Adam',92),('Bart',66),('Lisa',88)]
L1=sorted(L,key=by_scort,reverse = True)
print(L1)   
这里的reverse指的是是否对sort后的序列逆序, 即从大到小 ; 

PS:和cmp函数使用一样, sort(a,a+n,cmp)  ,这里在调用key的时候也不会带上后面的传参;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kelisita

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值