Effective Python:(11)

Effective Python:(11)

Effective Python提供90条实用编程技巧,让我们解决常见问题时可以采用新颖并高效的做法。排序就是其中一个经典的,常见的,但又有些复杂需求的算法。所以今天描述的需求会有些复杂。

python中内置sort方法来解决可以有顺序的数据类型的排序,但是对于一般的不能进行大小比较的对象类型,也需要自己给sort方法传递key参数来表明用什么属性排序。

如何实现这个key参数呢?需要用到lambda关键字构造一个函数,并返回我们要用到属性名称做为key参数。

接下来遇到的问题就是如何用多个属性进行排序,比如先按A排序再按B排序,这里面推荐用元组来实现,即通过lambda构建一个返回值是元组的函数,这样key是元组就可以实现多属性排序。

接下来又遇到问题是如果一个属性要升序,一个属性要降序怎么办,对于可计算属性在lambda函数中采用一元减操作符来取反实现反序。

问题又来了,如果要反序的属性不是可计算的不能加负号怎么办,这里又推荐了一种终极办法,但又是最简单的办法,就是对于同一个列表上多次调用sort方法,一次处理一个属性排序,这个其实也是最通用的算法实现!

#学习指导#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值