Python 算法-sorted方法总结

最近写了挺多排序相关的题的,借此对于排序方法做一个总结

1. 基本的排序的list.sort和sorted方法

aea49e18d31d49ee881dd4b9472b7421.png

执行了一下,好像看起来,没啥差别呢,是不是这两个就可以平换替用呀,那再让我们看看下面的

759825d5a68f4ed18eb2489fe3f063b9.png

发现了吧,这个就是入门很容易错的问题,sorted对可迭代对象进行排序之后,不会改变对象本身的值,而是返回一个排序完之后的列表,所以使用时,需要记得用一个对象接收,同时对于sorted来说,它的适用范围也比list.sort方法更广阔,因为它不仅使用于列表,同时适用于特殊的嵌套列表,且可以使用关键字来自定义排序规则.

2.sorted关键字排序

这个时候突然来了一个二维列表list_=[[1,3],[3,2],[2,1]],我们想根据嵌套列表内第一个关键字进行排序,这时就可以使用我们的lambda 构造一个关键字来进行排序了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ29wZGk=,size_20,color_FFFFFF,t_70,g_se,x_16

 同理,如果想要根据第二个关键字进行排序可以写成

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ29wZGk=,size_20,color_FFFFFF,t_70,g_se,x_16

 这里的原理,其实就是选择你要参考的值时哪里,你要比对的是列表内的第二个值,你就把所有的第二个值取出来,然后进行比较后,返回下标给list_,然后list_根据下标的改变,发生移动,从而完成了改变

3.soted多关键字排序

这个主要是应用在特殊场景内,假定来了一个成绩单,score_list=[{"math":12,"cn":10},{"math":12,"cn":13},{"math":14,"cn":10},{"math":11,"cn":15}],让你根据math成绩进行排序,这是你发现有两个学生的数学是一样的捏,都是12分,那咋办?,那边教务局说那就按照语文成绩来,这就是多关键字的情况了,这个时候我们可以使用operator内带的itemgetter,来帮助我们啦

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ29wZGk=,size_20,color_FFFFFF,t_70,g_se,x_16

 这样我们顺利的完成任务了

4.对于字符串排序的处理

也不一定每次都能来整数类型,这个时候来了字符串对象,那么我们又该怎么处理呢,比如这个时候来了一个字符串"三思而后行" string_="One Two Three Go",我们怎么给他排序呢,我们可以把他们都处理为小数,然后根据其字符的ASCLL码,进行比对就可以判断出来了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ29wZGk=,size_20,color_FFFFFF,t_70,g_se,x_16

 暂时先这样,后续还会继续跟新相关排序技巧的

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Copdi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值